Cloud-based content retrieval system

ABSTRACT

A cloud-based media content management system for managing access to media content items is disclosed. Managing access to media content items by a cloud-based media content management system may include, for example, managing uploads of media content items from a population of media devices, reducing duplication of media content data stored in cloud-based storage, and providing user-controlled access to media content items stored in cloud-based storage across any number of user devices. In this context, a cloud-based media content management system and cloud-based storage system generally refer to hosted computing and data storage services that may be accessed by media devices and other devices over a digital network such as the Internet.

PRIORITY CLAIM

This application claims benefit as a Continuation of U.S. patentapplication Ser. No. 14/705,938, filed May 6, 2015, which claims benefitof Provisional Appln. 61/989,466, filed May 6, 2014, and ProvisionalAppln. 62/048,788, filed Sep. 10, 2014, the entire contents of each arehereby incorporated by reference for all purposes as if fully set forthherein. The applicant hereby rescinds any disclaimer of claim scope inthe parent application(s) or the prosecution history thereof and advisethe USPTO that the claims in this application may be broader than anyclaim in the parent application(s).

TECHNICAL FIELD

Embodiments relate generally to the management of media content in acloud-based computing environment.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

Digital Video Recorders (DVRs) and other media devices enable users torecord and view media content, among many other features. Typically, aDVR includes a hard disk drive or other integrated storage device onwhich media content items may be recorded. For example, if a userdesires to record a television program for later or repeated viewings,the user may provide input to the DVR instructing the DVR to record acopy of the television program. The user may then instruct the DVR toplay the recorded copy of the television program from local storage at alater time.

Cloud-based data storage services are an increasingly popular tool forusers to store many types of data (e.g., documents, media content, etc.)and to access the data from any number of separate client devices. Acloud-based data storage provider typically hosts the physical serversand other components for storing user data and provide users access tothe data over a digital network, such as the Internet. A cloud-basedstorage service may alleviate users from some of the burdens of managinglocal storage devices, including storage space limitations, potentialhardware failures, and enabling access to user data across differentclient devices.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 is a block diagram of an example system that includes acloud-based media content management system, in accordance with one ormore embodiments;

FIG. 2 is a block diagram of components of a cloud-based media contentmanagement system, in accordance with one or more embodiments;

FIG. 3 is a block diagram of components of a service provider system, inaccordance with one or more embodiments;

FIG. 4 is a block diagram of an example media device, in accordance withone or more embodiments;

FIG. 5 depicts an example flow diagram for managing uploads of mediacontent items at a media device, in accordance with one or moreembodiments;

FIG. 6 depicts an example flow diagram for managing uploads of mediacontent items from a population of media devices, in accordance with oneor more embodiments;

FIG. 7A depicts an example representation of a population of mediadevices receiving a media content item from multiple sources, inaccordance with one or more embodiments;

FIG. 7B depicts an example of a media content item uploaded by apopulation of media devices and storage of the media content item forthe entire population, in accordance with one or more embodiments;

FIG. 8 depicts another example of a media content item uploaded by apopulation of media devices and storage of the media content item forthe entire population, in accordance with one or more embodiments;

FIG. 9 depicts an example flow diagram for a cloud-based media contentmanagement system to manage access to media content items acrossmultiple media devices associated with a user account, in accordancewith one or more embodiments;

FIG. 10 depicts an example flow diagram for processing a request for amedia content item stored by a cloud-based media content managementsystem, in accordance with one or more embodiments;

FIG. 11 depicts an example flow diagram for pre-caching portions ofmedia content items at a media device for playback, in accordance withone or more embodiments;

FIG. 12 depicts an example flow diagram for a cloud-based media contentmanagement system to manage tuner conflicts, in accordance with one ormore embodiments;

FIG. 13 depicts an example flow diagram for a cloud-based media contentmanagement system to manage storage of media content items, inaccordance with one or more embodiments;

FIG. 14 depicts an example flow diagram for managing access to mediacontent items for upgraded and/or replaced media devices, in accordancewith one or more embodiments;

FIG. 15 is block diagram of a computer system upon which embodiments ofthe invention may be implemented.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Embodiments are described herein according to the following outline:

-   -   1.0. General Overview    -   2.0. Structural Overview        -   2.1. System Overview        -   2.2. Example Cloud-Based Media Content Management System        -   2.3. Example Service Provider System        -   2.4. Example Media Device    -   3.0. Functional Overview        -   3.1. Distributed Media Device Upload        -   3.2. Cloud Storage of Media Content        -   3.3. Media Content Playback        -   3.4. Cloud-Based Tuners        -   3.5. Cloud Storage Extender    -   4.0. Example Embodiments    -   5.0. Implementation Mechanism-Hardware Overview    -   6.0. Extensions and Alternatives

1.0. General Overview

Approaches, techniques, and mechanisms are disclosed for managingstorage and access to media content items in a cloud-based computingenvironment. In this context, a cloud-based computing environmentgenerally refers to a collection of computing and data storage servicesaccessible to media devices and other client devices over a digitalnetwork such as the Internet. According to various embodiments, acloud-based media content management system manages storage and accessto media content items by managing uploads of media content items from adistributed population of media devices, reducing duplication of mediacontent data stored in cloud storage, providing user account-controlledaccess to media content items across any number of user devices, andproviding other cloud-based media content management services describedherein.

To illustrate a high-level example of a cloud-based media contentmanagement system interacting with various media devices, assume a userschedules a recording of a television program at a first media device(e.g., at a DVR in the user's home). In response to the user schedulingthe recording, the user's first media device tunes to the televisionprogram at the scheduled recording time to record the televisionprogram. Data indicating that the user scheduled the recording of thetelevision program may be sent to the cloud-based media contentmanagement system and stored in association with user accountinformation for the user. The user's first media device further may beconfigured to upload all or a portion of the recorded television programto a cloud storage system associated with the media content managementsystem. Other portions of the same television program may be uploaded byother media devices associated with other users. The user may thenrequest playback of the television program using one of the user's mediadevices, and the cloud-based media content management system may streama copy of the television program from the cloud storage system to therequesting device.

In one embodiment, to comply with applicable content rights related tocopying and transmitting media content items stored in a cloud storagesystem, access to the stored media content items may be restricted basedon user account data indicating, for each user account, which mediacontent items a user has selected for recording at one or more of theuser's local media devices. For example, in response to a request from amedia device to stream a media content item from cloud storage, a cloudbased media content management system may enable the media device tostream the content only if the system determines that the device isassociated with a user account that previously requested a recording ofthe same media content item. Furthermore, a cloud-based media contentmanagement system may store media content items in such a way thatenables the system to provide users access to copies of media contentitems that are identical or substantially the same as a version of themedia content items originally recorded and/or played at each user'slocal media device, including any regional advertisements, video and/oraudio corruptions, and other attributes that may be specific to themedia content received by one or more particular media devices.

In addition to managing storage and access to media content items acrossusers' media devices, a cloud-based media content management system mayenable a number of additional features that are not traditionallypossible with standalone media devices. For example, a cloud-based mediacontent management system as described herein may enable users to easilyupgrade or replace media devices without losing access to previouslyrecorded media content items, to concurrently record more media contentitems than there are physical tuners available to a user, to storerecordings of more media content than a user has local storage toaccommodate, and to automatically adjust recording start and end timesto accommodate changes in program airing schedules, among otherfeatures.

In other aspects, the invention encompasses a computer apparatus and acomputer-readable medium configured to carry out the foregoingtechniques.

2.0. Structural Overview

2.1. System Overview

FIG. 1 is a block diagram of an example system 100 that implements acloud-based media content management system, in accordance with one ormore embodiments. System 100 comprises one or more computing devices.These one or more computing devices comprise any combination of hardwareand software configured to implement the various logical componentsdescribed herein. For example, the one or more computing devices mayinclude one or more memories storing instructions for implementing thevarious components described herein, one or more hardware processorsconfigured to execute the instructions stored in the one or morememories, and various data repositories in the one or more memories forstoring data structures utilized and manipulated by the variouscomponents.

In one embodiment, a system 100 includes one or more media devices 108,including media devices 108-1 and media devices 108-2. As used herein, amedia device 108 generally may refer to any type of computing devicethat is capable of receiving media content items, such as televisionprograms, movies, video on demand (VOD) content, etc., from a cablesignal, terrestrial signal, digital network-based data, etc. In FIG. 1,for example, a media device 108-1 may include a TV-tuner input that canbe used to play, record, stream, and/or otherwise access media contentitems received from one or more content sources 106. For example, onecontent source 106 may include a live television feed that is providedby a cable operator. Other example content sources 106 include, but arenot limited to, Video On Demand (VOD) libraries, third party contentproviders (e.g., Netflix®, Amazon Prime®, etc.), web-based mediacontent, satellite broadcast content, terrestrial broadcast content,etc. Example media devices 108-1 include, but are not limited to, aset-top box (STB), digital video recorders (DVRs), personal computers,tablet computers, handheld devices, televisions, and other computingdevices.

In an embodiment, system 100 may further include one or more IP-enabledmedia devices 108-2. In general, an IP-enabled media device 108-2 mayrefer to any type of computing device that is capable of receiving mediacontent over one or more digital networks 104, such as the publicInternet, intranet, LAN, WAN, etc., but which may or may not include aTV-tuner input. Examples of media devices 108-2 include, withoutlimitation, STBs, DVRs, personal computers, smartphones, tablets,laptops, game devices, media servers, digital media receivers,televisions, terrestrial antennas, etc. A typical user may own severalmedia devices 108, which may be located and used at various locationsthroughout the user's home and elsewhere.

In an embodiment, media devices 108 are coupled to a cloud-based mediacontent management system 102 via one or more networks 104. Networks 104broadly represent one or more LANs, WANs, cellular networks (e.g., LTE,HSPA, 3G, older technologies, etc.), and/or internetworks using any ofwired, wireless, terrestrial microwave, or satellite links, and mayinclude the public Internet. Furthermore, each media device 108 may becoupled to one or more other media devices via one or more networks 104.

As described in more detail hereinafter, each media device 108 generallymay be configured to perform one or more actions relative to mediacontent items, including receiving media content items from contentsources 106, playing media content items, scheduling recordings of mediacontent items, uploading all or portions of media content items to acloud storage system, streaming media content items to other mediadevices, etc. In an embodiment, a cloud-based media content managementsystem 102 generally manages storage of media content items and providesmedia devices controlled access to media content items via one or morenetworks 104.

System 100 illustrates only one of many possible arrangements ofcomponents configured to provide the functionality described herein.Other arrangements may include fewer, additional, or differentcomponents, and the division of work between the components may varydepending on the arrangement.

In FIG. 1, the various components of system 100 are depicted as beingcommunicatively coupled to various other components by arrows. Thesearrows illustrate only certain examples of information flows between thecomponents of system 100. Neither the direction of the arrows nor thelack of arrow lines between certain components should be interpreted asindicating the existence or absence of communication between the certaincomponents themselves. Indeed, each component of system 100 may featurean open port, API, or other suitable communication interface by whichthe component may become communicatively coupled to other components ofsystem 100 as needed to accomplish any of the functions of system 100described herein.

2.2. Example Service Provider System

FIG. 2 is a block diagram of one example system 200 that implements acloud-based media content management system, in accordance with one ormore embodiments. System 200 includes an operator headend 202, a serviceprovider system 204, and a cloud storage system 206.

In an embodiment, an operator headend 202 generally represents a systemfor receiving and processing television and other media content signalsfrom one or more content sources 106, and for distributing media contentitems based on the media content signals to various media devices 108.As one example, an operator headend 202 may represent a cable televisionheadend that receives and processes signals (e.g., received viasatellite, coaxial cable, microwave link, fiber-optics, the Internet,etc.) from content sources 106, and distributes the processed videocontent to media devices 108 using a transmission infrastructure 208.Transmission infrastructure 208 generally may include components capableof transmitting media content items using any number of encoding andtransmission formats including, but not limited to, quadrature amplitudemodulation (QAM), Advanced Television Systems Committee (ATSC),satellite, Digital Video Broadcasting-Terrestrial (DVB-T), IP-basedtransmission over one or more networks, etc.

In one embodiment, an operator headend 202 may host one or more mediacontent management devices 210. In general, media content managementdevices 210 may include one or more computing devices and storagecomponents configured to store media content items and to provide accessto the media content items by media devices 108. In an embodiment, useraccounts associated with the cloud-based media content management systemmay be provided with an amount of storage at media content managementdevices 210 to store media content items selected for recording. Theuser accounts may, for example, be created and managed by a serviceprovider system 204, and each user account may be associated with one ormore media devices 108 (e.g., based on a user account login at the mediadevices). Media content items stored at media content management devices210 may be delivered to media devices 108 by the operator headend 202using a transmission infrastructure 208.

In an embodiment, a cloud-based media content management system mayfurther include one or more cloud storage systems 206. In general, acloud storage system 206 represents a data storage system that isaccessible to media devices 108 via one or more networks (e.g., anetwork 104) and is typically owned and managed by an entity other thana user of the media device 108. In an embodiment, a cloud storage system206 may be managed and operated by an operator of a service providersystem 204, or a cloud storage system 206 may be operated by athird-party entity. Examples of third-party cloud storage systemsinclude Amazon Web Services (AWS), Microsoft Azure, Google CloudStorage, etc. Similar to storage available at an operator headend 202,user accounts associated with a service provider system 204 may beprovided with an amount of storage space at cloud storage system 206.The amount of storage available to each user account at media contentmanagement devices 210 and/or cloud storage system 206 may be presentedto users as a single pool of available data storage or, in otherexamples, a user may be able to separately manage storage available atmedia content management devices 210 and at a cloud storage system 206.

In one embodiment, a cloud storage system 206 generally may be used tostore media content items selected for recording by users of mediadevices 108. Media content items stored in cloud storage system 206 maybe made available to users of media devices 108 until the media contentitems are selected for deletion by a user, exceed a cloud storagedeletion policy, or based on any other deletion policy. In oneembodiment, media content received by the operator headend 202 fromcontent sources 106 may be delivered to the cloud storage system 206 viaa fixed-bandwidth line to facilitate storage of media content itemsselected for recording by users.

In an embodiment, a service provider system 204 comprises one or morecomputing devices generally configured to manage requests from mediadevices 108 (e.g., media content information and search requests,recording requests, playback requests, content deletion requests, pausepoint management across devices, etc.), and to manage storage of mediacontent items across one or more operator headends 202 and cloud storagesystems 206, among other services and features described herein.

Based on various factors, it may be more efficient at times to streamstored media content items from media content management devices 210 atan operator headend 202 instead of from a cloud storage system 206, andvice versa. For example, a transmission infrastructure 208 of anoperator headend 202 typically may be more reliable and have greaterbandwidth capacity than networks available for transmitting mediacontent items from a cloud storage system 206 to media devices 108.However, a transmission infrastructure 208 may not be capable oftransmitting media content items to some types of media devices 108(e.g., mobile devices that are not connected to the transmissioninfrastructure 208), and some media content formats may not be suitablefor transmission by an operator headend 202. In these and otherinstances, for example, it generally may be more efficient to stream themedia content items from a cloud storage system 206.

To facilitate streaming of media content items from either an operatorheadend 202 or cloud storage system 206 when appropriate, in oneembodiment, a service provider system 204 may be configured to determinewhich media content items to store at the operator headend 202, whichmedia content items to store at cloud storage systems 206, or both. Forexample, a service provider system 204 may determine which media contentitems selected for recording by one or more users are most likely to beviewed within a particular amount of time or with a particularfrequency. For media content items which it is determined are likely tobe watched soon after the items are selected for recording, for example,those items may be stored at the operator headend 202. Storage of theseitems at the operator headend 202 may be beneficial, for example, totake advantage of the more robust transmission infrastructure 208. Incontrast, media content items that are determined to be unlikely to beselected for viewing in the near future, or are likely to be viewed on amedia device that is not connected to a transmission infrastructure 208,may be stored at a cloud storage system 206 to reduce the amount of datastored at the operator headend 202.

Example criteria that a service provider system 204 may use to determinewhere to store media content items include information about particularmedia content items and historical data for one or more user accounts.For example, the criteria may include an age of the media content item(e.g., measured from an original air date), a user's recent viewingbehavior (e.g., whether the user recently watched an earlier episode inthe same series), an overall popularity of the media content itemsacross all user accounts, the aggregated viewing habits across mediadevices 108 in a particular household, a rate at which a user iscurrently viewing episodes in a series and the number of episodesremaining, etc.

In one embodiment, a service provider system 204 may use variouscriteria such as the example criteria described above to generate aweighting factor, also referred to herein as a relevancy factor, foreach media content item selected for recording by a user account. Forexample, a relevancy factor may indicate for each media content item alikelihood that a request to play the media content item is receivedwithin the next N days, or within some other time period. A relevancyfactor may be generated for each media content item relative to anentire populations of user accounts, a targeted group of user accounts,or for individual user accounts. In an embodiment, the relevancy factorsmay be used to determine where to store particular media content items(e.g., at an operator headend 202 and/or cloud storage system 206),video and/or audio formats in which to store particular media contentitems, bit rates at which to store and/or transmit particular mediacontent items, etc. In an embodiment, a relevancy factor may be used todetermine if and when to generate and store transcoded versions ofparticular media content. For example, if a user pauses a media contentitem being viewed in the user's home, depending on a relevancy factorassociated with the media content item, a transcoded version of themedia content item may be generated and stored in the cloud storagesystem 206, the transcoded version suitable for playing on a mobiledevice. As another example, depending on a relevancy factor, a serviceprovider system 204 may decide to maintain in storage only a single lowbitrate recording of the media content item if the media content item isdetermined unlikely to be watched in the near future.

As one example of how a cloud-based media content management system 200may manage transmission and storage of media content items, when a mediadevice 108 tunes to live media content (e.g., a live television stream),the selected media content may be provided to the media device 108 by anoperator headend 202 via a transmission infrastructure 208 (e.g., a QAMinfrastructure). If a user of the media device 108 pauses playback ofthe live media content, in one embodiment, a service provider system 204may cause a recording of the same media content to start at the operatorheadend 202 and/or at a cloud storage system 206. When the user resumesplayback of the media content item from the same media device 108 orfrom another media device 108 associated with the user's account, themedia content item may then be streamed to the media device 108 via anIP-based network from either the operator headend 202 or cloud storagesystem 206. If the user subsequently catches up to the live point of themedia content item, the cloud-based media content management system 200may continue to stream the media content item to the media device 108via an IP-based network, or may instead resume transmission of the mediacontent item using the transmission infrastructure 208.

As another example of the cloud-based media content management system200 managing transmission and storage of media content items, a serviceprovider system 204 may be configured to store at an operator headend202 and/or cloud storage system a “live buffer” of media content tunedto by one or more media devices 108. For example, each time a mediadevice 108 tunes to a receive a particular media content item, serviceprovider system 204 may start a recording of the media content item atoperator headend 202 and/or cloud storage system 206, where therecording is managed as a rolling buffer of a configurable duration oftime (e.g., 30 minutes). The rolling buffer for a particular mediacontent item may be automatically deleted after a media device tunes todifferent media content (e.g., in response to a channel change,selection of different content from an EPG, etc.), or the buffer may bemaintained in storage for a configurable period of time (e.g., 30minutes). If a user subsequently selects a particular media content itemto record, the rolling buffer can be used as part of the recordingstored for the user, among other uses.

Although FIG. 2 includes an operator headend 202 that receives mediacontent from content sources 106, distributes the media content to mediadevices 108, and that also may be a source of media content items storedin a cloud storage system, other implementations may not directlyinvolve an operator headend 202. In one embodiment, media devices 108may receive media content items from content sources 106 (e.g., via anoperator headend 202 or directly from a content source 106 via an IPnetwork) and the media content items may be uploaded from the mediadevices 108 to cloud storage. For example, the content sources 106 mayinclude providers of over-the-top content (OTT), video on demand (VOD),and other content that is transmitted to media devices 108 over theInternet and without the involvement of a cable or satellite televisionsystem operator. In this and other examples described herein, a serviceprovider system 204 may not directly interface with an operator headend202 to enable storage and access to media content items in cloudstorage.

2.3. Example Service Provider System

FIG. 3 is a block diagram of components of an example service providersystem 204. In general, a service provider system 204 may be configuredto manage storage (e.g., at an operator headend 202 and/or cloud storagesystem 206) and access to media content items by various media devices108. In one embodiment, each media device 108 may be associated with oneor more user accounts that enable a service provider system 204 to trackmedia content items scheduled for recording by particular users, tomanage storage of uploaded media content items for each user account,and to manage access to media content items across user devices, amongother features. In an embodiment, a service provider system 204 mayinclude a control panel module 302, a network scheduler module 304, anupload management module 306, subscription/recording metadata 308, adevice and account provisioning module 310, a streaming and hostingmodule 312, and a storage and transcoding module 314.

Storage and transcoding module 314 generally may include one or morecomponents configured to manage storage and transmission of mediacontent items received from one or more content sources 106 and/or mediadevices 108. In on embodiment, storage and transcoding module 314 mayinclude and/or interface with one or more components located at anoperator headend 202 and/or cloud storage system 206 that are configuredto store media content items. Storage and transcoding module 314 mayfurther include one or more components configured to manage storage andaccess to media content items uploaded from a population of mediadevices 108.

In one embodiment, a storage and transcoding module 314 may beconfigured to manage storage space available to users of media devices108 for storing recorded media content items and other data. Forexample, user accounts may be associated with an amount of cloud storagefor storing media content items selected for recording by a userassociated with the user account. A total amount of storage spaceassociated with each user account may depend on a paid subscriptionlevel, an amount of storage purchased by the user, or based on any otheruser account considerations.

In general, a storage and transcoding module 314 may be configured toenable users to store at any one point in time an amount of recordedmedia content that does not exceed a total amount of storage spaceassociated with the user account. For example, if a particular useraccount is associated with 10 GB of total cloud storage space, a userassociated with the user account may cause up to 10 GB of media contentitems to be stored in cloud storage. However, it is noted that an amountof storage space associated with each user account may represent a“virtual” amount of storage, meaning the amount of storage spaceassociated with media content items recorded by the user account may notreflect an actual amount of storage space used to store the mediacontent items stored for that user account. For example, if two useraccounts each record the same media content item, an amount of usedstorage space associated with each of the two user accounts may beincreased by the size of the media content item, however, only oneshared copy of the media content item may actually be stored by storageand transcoding module 314. Other possible rules may be implemented todetermine how media content items selected for recording by a user countagainst a user's total available storage space, such as dividing thestorage space associated with a particular media content item by anumber of users who recorded the same media content item. In oneembodiment, a service provider system 204 may enable users to upgradethe storage associated with a user account in ways other than increasingtotal storage space, such as upgrading the storage to provide access toother transcoded versions of stored media content items (e.g., differenttranscoded versions for different types of devices on which the userdesires to view the media content items).

Media content items scheduled for recording may be processed by astorage and transcoding module 214 before the media content items aresent to one or more media devices 108, or the media content items may besent directly to media devices 108 and later uploaded to a storage andtranscoding module 314 from the media devices.

In one embodiment, a storage and transcoding module 314 may include oneor more application program interfaces (APIs) configured to receive andprocess commands to play, record, delete, create copies, or performother operations related to media content items managed by the storageand transcoding module 314. For example, such commands may be generatedand received from a network scheduler module 304, a media device 108, orother component of a cloud-based media content management system.

In an embodiment, a streaming and hosting module 314 is configured tostream, download, or otherwise send media content items stored in cloudstorage to media devices 108. Streaming and hosting module 314 may, forexample, include one or more servers that are part of a content deliverynetwork (CDN) and configured to deliver media content items and otherdata to a distributed population of media devices 108. In an embodiment,a streaming and hosting module 314 may further be configured to performone or more transformations to media content items sent to media devices108, including converting stored media content segments into a formatsuitable for delivery over one or more networks 104, transcoding mediacontent items for particular types of media devices 108, and performingany other types of data transformations before sending media contentitems to media devices.

In an embodiment, a service provider system 204 includes one or morecomponents for managing user accounts, including managing useraccount-based recording schedules, access to media content items acrossmedia devices 108, pause point information, etc. A network schedulermodule 304 may, for example, be similar to a scheduling component of amedia device 108, such as a DVR. In one embodiment, a network schedulermodule 304 is configured to receive requests to schedule recordings ofmedia content items from various media devices 108, each media deviceassociated with a user account. For example, a user may use a firstmedia device to schedule a recording of a particular television programby a second media device. In an embodiment, the first media device maysend a request for the recording to a network scheduler module 304. Ator before the scheduled recording time, a network scheduler module 304may then send a command to the second media device instructing thesecond media device to record the television program. In an embodiment,network scheduler module 304 may additionally or alternatively send acommand to storage and transcoding module 314 instructing the module toreceive and store the requested television program directly from acontent source 106.

In one embodiment, various aspects of the service provider system 204may be configured via a control panel 302. For example, a control panel302 may provide one or more interfaces that enable content providersand/or media device users to configure various settings relating to thecloud-based media content management system. Examples of settings thatmay be configured by a media content provider include selectivelyallowing or denying users the ability to store recordings in a cloudstorage system on a per-channel or per-media content airing basis, anamount of storage space available to each user, restrictions on physicallocations to which media content items provided by the operator may besent from cloud storage, etc. Location restrictions, for example, mayindicate that media content items provided by the operator may be sentonly to media devices 108 that are accessible via a user's home network,sent only to media devices accessible over the content provider'snetwork, or that media content items may be sent anywhere. A contentprovider may configure a time limit specifying how long media contentitems provided by the content provider may be accessed from cloudstorage (e.g., 28 days after airing or 7 days after recording). Otherconfigurations may include a number of concurrent streams each useraccount is allowed, a duration of time each media content item isallowed to be stored in cloud storage, whether users are permitted toundelete media content items, whether users are able to recordpreviously aired content, whether trick play is enabled, etc.

In an embodiment, a control panel 302 may further provide one or moreinterfaces for end users to configure various aspects of the serviceprovider system 204. For example, one or more interfaces may be providedthat enable users to configure an amount of cloud storage available to auser, to purchase additional storage space, and to configure and/orpurchase a number of virtual tuners available for use by user. A controlpanel 302 may further include one or more interfaces that enable usersto manage media content items currently stored by the user in cloudstorage, manage sending media content items to particular media devicesassociated with the user, and to configure other aspects of the user'saccount.

In an embodiment, an upload management module 306 is configured tomanage uploads of media content items from a population of media devices108. For example, a user of a media device 108 may schedule a recordingof a movie on the media device. An upload management module 306generally may be configured to receive an indication that a media device108 is recording a particular media content item and, in response, maycause the media device 108 to upload one or more segments of the mediacontent item to a storage and transcoding module 314. The storage ofmedia content items in cloud storage may be used to provide users withaccess to the media content items across media devices 108 associatedwith each user, as described in more detail hereinafter.

In one embodiment, an upload management module 306 may store and manageone or more device upload efficiency profiles. As used herein, a deviceupload efficiency profile generally specifies various attributes andvalues related to how media devices 108 process and upload media contentitems to a service provider system 204. As described in more detailhereinafter, a device upload efficiency profile may, for example,specify how a media device defines segments of a media content item andhow often a media device 108 checks defined segments for consistencywith a service provider system 204. A media device 108 may store severaldifferent profiles and change which profile is in current use based onthe occurrence of certain conditions. In an embodiment, an uploadmanagement module 306 may further generate and distribute new ormodified device upload efficiency profiles to media devices 108 inresponse to conditions determined by a service provider system 204.

In one embodiment, a service provider system 204 may includesubscription and recording metadata 308, including metadata related tomedia content items selected for recording by users of media devices108. For example, the metadata may include information that identifiesmedia content items selected for recording by particular user accounts,media content items selected for deletion, or any other informationrelated to the operation of the media devices. The subscription andrecording metadata 308 may further include data indicating subscriptioninformation related to particular user accounts, including availablecontent sources, allocated storage amounts, etc.

In an embodiment, device and account provisioning module 310 may beconfigured to enable creation and management of user accounts, and tomanage the association of user accounts with one or more media devices108. A user of one or more media devices 108 may be associated with auser account that enables a service provider system 204 to store andtrack information about the user across different media devices. Forexample, a service provider system 204 may store information inassociation with each user account including information about usersubscriptions to particular content sources 106, metadata about mediacontent items recorded by the user account, user preferences, userprofile information, user viewing history, etc. In an embodiment, useraccounts may be associated with authentication information (e.g., ausername and password) that enables users to associate particular mediadevices 108 with particular user accounts. For example, a user mayassociate a particular media device 108 with a user account by providinga username and password or other authentication information at the mediadevice 108.

2.4. Example Media Device

FIG. 4 illustrates an example block diagram of a media device inaccordance with one or more embodiments. As shown in FIG. 4, a mediadevice 108 may include multiple components such as a memory system 402,one or more storage devices 404, a central processing unit (CPU) 406, adisplay sub-system 408, an audio/video input 410, one or more inputdevices/tuners 412, a network module 414, an uploader module 416, and/orother components used to perform the functionality described herein. Inan embodiment, a media device 108 may be a DVR. A multifunction mediadevice is described U.S. patent application Ser. No. 12/631,740,entitled “Multifunction Multimedia Device,” which is owned by theApplicant and is hereby fully incorporated by reference.

In an embodiment, storage devices 404 generally represent secondarystorage accessible by the media device 108. A storage device 404 mayinclude, but is not limited to, any combination of, one or more of:Solid State Drives (SSD), hybrid hard drives, hard drives, etc. Eachmedia device 108 may or may not include one or more storage devices 404.If a media device 108 includes a storage devices 404, the storage may beused for various purposes including storing all or portions of recordedmedia content items, providing a buffer for media device tuners 412,pre-caching portions of media content items stored by a cloud storagesystem, etc.

In an embodiment, audio/video input 410 generally corresponds to anycomponent that includes functionality to receive audio and/or videoinput (e.g., HDMI, DVI, Analog) from an external source. For example,the audio/video input 410 may be a DisplayPort or a high definitionmultimedia interface (HDMI) that can receive input from differentdevices. The audio/video input 410 may receive input from a set-top box,DVR, a Blu-ray disc player, a personal computer, a video game console,an audio/video receiver, a compact disk player, an enhanced versatiledisc player, a high definition optical disc, a holographic versatiledisc, a laser disc, mini disc, a disc film, a RAM disc, a vinyl disc, afloppy disk, a hard drive disk, etc. A media device 108 may include anynumber of audio/video inputs 410.

In an embodiment, input device/tuners 412 generally represents any inputcomponents that can receive a content stream (e.g., through cable,satellite, internet, network, terrestrial antenna, etc.). In a tunerconfiguration, input device/tuner 412 may allow one or more receivedfrequencies to pass through while filtering out others (e.g., by usingelectronic resonance, etc.). A television tuner, for example, mayconvert an RF television transmission into digital audio and videosignals which can be further processed to produce sound and/or an imageor accept digital signals such as MPEG2, MPEG4, etc. In an embodiment,each media device 108 may have one or more tuners (e.g., quadratureamplitude modulation (QAM) tuners, Digital Video Broadcasting-Cable(DVB-C) tuners, Advanced Television Systems Committee (ATSC) tuners,etc.) for receiving live or on-demand television content from contentsources 106. A tuner can be a physical tuner or a virtual tuner thatrepresents an abstract perception of physical components used to receivebroadcast content.

In an embodiment, a network module 414 generally represents any inputcomponent that can send and receive data over a network (e.g., internet,intranet, world wide web, etc.). Examples of a network module 414include, but are not limited to, any of: a network card, networkadapter, network interface controller (NIC), network interface card,wireless card, Local Area Network adapter, Ethernet network card, anyother component that can send and receive information over a network,such as one or more networks 104. The network module 414 may also beused to directly connect with another device (e.g., a media device, acomputer, a secondary storage device, etc.).

In an embodiment, an uploader module 416 is configured to manage uploadsof media content items from a media device 108 to cloud storage (e.g.,storage at an operator headend 202, service provider system 204, and/orcloud storage system 206). In one embodiment, an uploader module 416includes one or more device efficiency profiles. A device efficiencyprofile generally represents a set of information that specifies one ormore attributes, parameters, and other settings related to how a mediadevice 108 segments and uploads media content items. As indicated above,examples of settings that may be specified in a device efficiencyprofile include how a media device defines a segment and a frequencywith which the media device checks each segment for consistency.

In one embodiment, a media device 108 may switch between deviceefficiency profiles in response to the occurrence of particularconditions. For example, a media device 108 may be configured to switchprofiles if the media device determines that it has received one or moresegments containing errors, or if the media device determines thatnetwork conditions have changed.

In one embodiment, a media device 108 may be configured to periodicallydetermine and send statistics related to the operation of the mediadevice, including network bandwidth usage, segmentation speed, or anyother statistics. The data collected by each media device 108 may besent and stored by a service provider system 204. In one embodiment, theservice provider system 204 may use the statistical data when selectingparticular media devices 108 from which to upload media contentsegments, to modify or create new device efficiency profiles, or for anyother purposes.

In an embodiment, input may be received by a media device 108 from anycommunicatively coupled device through wired and/or wirelesscommunication segments. Input received by the media device 108 may bestored to the memory system 402 or storage device 404. The memory system402 may include one or more different types of physical memory to storedata. For example, one or more memory buffers (e.g., an HD frame buffer)in the memory system 402 may include storage capacity to load one ormore uncompressed high definition (HD) video frames for editing and/orfingerprinting. The memory system 402 may also store frames in acompressed form (e.g., MPEG2, MPEG4, or any other suitable format),where the frames are then uncompressed into the frame buffer formodification, fingerprinting, replacement, and/or display. The memorysystem 302 may include FLASH memory, DRAM memory, EEPROM, traditionalrotating disk drives, etc.

In an embodiment, central processing unit 406 may include functionalityto perform the functions described herein using any input received bythe media device 108. For example, the central processing unit 406 maybe used to dynamically derive fingerprints from media content framesstored in the memory system 402. The central processing unit 406 may beconfigured to mark or identify media content or portions of mediacontent based on tags, hash values, fingerprints, time stamp, or othersuitable information associated with the media content. The centralprocessing unit 406 may be used to modify media content (e.g., scale avideo frame, etc.), analyze media content, decompress media content,compress media content, etc. A video frame (e.g., an HD video frame, 4Kframe, etc.) stored in a frame buffer may be modified dynamically by thecentral processing unit 406 to overlay additional content (e.g.,information about the frame, program info, a chat message, systemmessage, web content, pictures, an electronic programming guide, videocontent, textual content, or any other suitable content) on top of thevideo frame, manipulate the video frame (e.g., stretching, rotation,shrinking, etc.), or replace the video frame in real time. Accordingly,an electronic programming guide, advertisement information that isdynamically selected, media content information, or any othertext/graphics may be written onto a video frame stored in a frame bufferto superimpose the additional content on top of the stored video frame.The central processing unit 406 may be used for processing communicationwith any of the input and/or output devices associated with the mediadevice 108. For example, a video frame that is dynamically modified inreal time may subsequently be transmitted for display. The centralprocessing unit 406 may be used to communicate with other media devicesto perform functions related to synchronization, publication of data,etc.

In an embodiment, the display sub-system 408 generally represents anysoftware and/or device that includes functionality to output (e.g.,Video Out to Display 418) and/or actually display one or more images.Examples of display devices include a kiosk, a hand held device, acomputer screen, a monitor, a television, projector, etc. The displaydevices may use different types of screens or display technology such asa liquid crystal display, cathode ray tube, a projector, a plasmascreen, etc. The output from the media device 108 may be specially forformatted for the type of display device being used, the size of thedisplay device, resolution (e.g., 720i, 720p, 1080i, 1080p, or othersuitable resolution), etc. However, some media devices 108 may not haveany display output components (e.g., a media device primarily configuredto stream media content items to other media devices).

3.0. Functional Overview

The example arrangements of FIG. 1 and FIG. 2 may implement a mediacontent management system that enables storage and access to mediacontent items in a cloud-based computing environment. In an embodiment,each of the processes described in this section may be implemented usingone or more computer programs, other software elements, and/or digitallogic in any combination of general-purpose computing devices or aspecial-purpose computing devices, while performing data retrieval,transformation, and storage operations that involve interacting with andtransforming the physical state of memory of the computing devices(s).In some embodiments, the processes are implemented in a systemcomprising media devices (e.g., DVRs, set-top boxes, personal computers,mobile devices, etc.) which may receive, play, record, and/or storemedia content items and a cloud-based media content management systemwhich manages user access to media content items. In other embodiments,the processes are implemented exclusively by one or more servers or by asingle client computing device. Examples of such systems are describedin the preceding sections.

In one embodiment, a cloud-based media content management system isconfigured to centrally manage storage and access by a population ofmedia devices to media content items. Managing storage of media contentitems generally may include, for example, recording a copy of selectedmedia content items using cloud-based tuners and/or coordinating mediacontent uploads from a population of media devices, and storing uploadedmedia content items in a manner that enables subsequent playback.Managing access to media content items may include, for example,restricting access to media content items stored in cloud storage on auser account basis, providing access to copies of media content itemsthat approximate a version of the media content item originally receivedby media devices, and enabling upgrading and replacement of mediadevices without losing access to previously recorded content. These andother features and services of a cloud-based media content managementsystem are described in the sections hereinafter.

In one embodiment, media content items stored by a cloud-based mediacontent management system may be uploaded from a population of mediadevices at which the media content items are initially received. Forexample, if several media devices each record a particular televisionprogram, a copy of the television program may be recorded by each of themedia devices and collectively uploaded by the devices to cloud storagefor subsequent access. Managing uploads of media content items from apopulation of media devices may be greatly improved using techniquesthat reduce an amount of data uploaded from each individual media deviceand that further reduce an amount of data stored by a cloud-based mediacontent management system. By reducing an amount of data uploaded fromindividual media devices, the user experience is improved by utilizingless of the bandwidth available to each media device and therebyincreasing the efficiency with which recorded media contents may beaccessed from cloud storage at any of a user's media devices.

3.1. Distributed Media Device Upload

In one embodiment, to provide cloud storage of media content itemsrecorded at various media devices, the media devices may upload entirecopy of media content items recorded by the media devices to acloud-based media content management system. However, storage space andbandwidth constraints at both the media devices and the media contentmanagement system present a number of challenges to uploading andstoring a separate copy of each media content item recorded. Thus, itgenerally may be desirable to reduce an amount of data uploaded by eachindividual media device and to further reduce the amount of data storedat the cloud-based media content management system.

In one embodiment, to reduce media device uploads and cloud storagespace requirements, a population of media devices may each upload to amedia content management system only portions of media content itemsrecorded at the media devices in a distributed manner. For example, eachmedia device that schedules a recording of a particular media contentitem may upload one or more selected segments of the media content item.As described in more detail hereinafter, in one embodiment, acentralized media content management system may coordinate thedistributed upload of media content items from the population of mediadevices so that entire copies of the media content items are receivedand stored, but without uploading a separate copy of the entire mediacontent items from every media device.

FIG. 5 illustrates an example flow 500 for media devices to manageuploading of media content items in a distributed environment, accordingto an embodiment. The various elements of flow 500 may be performed in avariety of systems, including systems such as system 100 and system 200described above. In an embodiment, each of the processes described inconnection with the functional blocks described below may be implementedusing one or more computer programs, other software elements, and/ordigital logic in any of a general-purpose computer or a special-purposecomputer, while performing data retrieval, transformation, and storageoperations that involve interacting with and transforming the physicalstate of memory of the computer.

At block 502, a media device receives a media content item. For example,the media content item may include a television program, a movie,on-demand content, or any other media content selected for recording orviewing by a user of the media device. The media device may tune to themedia content item in response to a user selection of the media contentitem from an electronic programming guide (EPG), a VOD library, athird-party video library, or other listing of available media content.

In one embodiment, a media device may tune to the media content item inresponse to receiving a command to record the media content item. Acommand to record the media content item may be initially received atthe media device, or at another media device associated with the sameuser account. For example, a user may provide input at a first mediadevice (e.g., a smartphone) requesting to record a media content item ata second media device (e.g., a DVR). In response to the input, the firstmedia device may send, to a network scheduler module 304 of a serviceprovider system 204 or directly to the second media device, a command toschedule the recording. The second media device may then tune to themedia content at the scheduled recording time in response to a commandreceived from the network scheduler module 304, a command receiveddirectly from another media device, or based on an internal command. Inone embodiment, a command to record the media content item may bereceived as part of a recording schedule including a list of scheduledrecordings. The command to record the media content item generally maybe received at the time any time before or during the airing of themedia content item.

In an embodiment, a media device tunes to a particular media contentitem using a tuner 412 or a network module 416 of the media device. Forexample, a tuner 412 may be configured to receive the content from acontent source 106 via an operator headend 202. As another example, ifthe media content item includes OTT content, a network module 416 of themedia device may access the media content via one or more networks(e.g., networks 104). If the media device has permission to access themedia content from a content source 106 (e.g., because the user has asubscription with the cable operator or internet-based content source,the media device has the ability to receive the content source based ongeographic location or service provider, etc.), the tuner 412/networkmodule 416 of the media device receives the media content item as acontent stream for further processing by the media device. Thus, bytuning and receiving the selected media content item, the media deviceis able to validate that the user account associated with the mediadevice has permission to access the media content.

At block 504, the media device identifies boundaries of segments withinthe media content item. As used herein, a segment of a media contentitem generally refers to a defined portion of the media content item,where the portion may span a particular length of time, comprise aparticular amount of data, or otherwise comprise a defined collection ofdata elements that represents a part of the entire media content item.In general, each segment may be defined by segment boundaries thatdefine a beginning and end of the segment. The segment boundaries may bedefined, for example, by particular frames within the media contentitem, by timing information associated with the media content item, bydata elements associated with the media content, or based on any otherattributes of the media content item, as described in more detailhereinafter.

As indicated above, a cloud-based media content management system mayreceive media content items from a population of media devices 108 as adistributed upload of individual segments of the media content items,where each individual segment is uploaded from a possibly differentmedia device of the population. For example, if two or more separatemedia devices each schedule a recording of the same television program,each of the media devices may (or may not) upload one or more segmentsof the television program, the uploaded segments collectively forming anentire copy of the television program. Some media devices may uploadmore segments than other media devices recording the same media contentitem. For example, it may be determined that certain media devices havemore available upload bandwidth than others, that certain media devicesare receiving a higher quality signal, or other factors that maypreference uploads from certain media devices over others.

Because each segment of a particular media content item may be uploadedfrom any media device of a population of media devices, segmentationrules may be defined for the population of media devices, where thesegmentation rules generally define how each media device of thepopulation segments media content items so that a cloud storage systemmay ultimately receive an entire copy of the media content item.Furthermore, depending on a particular segmentation scheme, varioustechniques may be used to “synchronize” the segmentation of mediacontent items by a population of media devices.

As one example of a segmentation rule for a population of media devices,each media device may segment media content items received by thedevices based on a common clock. For example, each media device may beconfigured to define segments of a media content item based on aparticular time span (e.g., every 6 seconds) according to a commonclock. Thus, if a particular media content item is scheduled to air from05:00 to 06:00, a first segment may include a portion of the contentairing between 05:00:00 and 05:00:06, a second segment may include aportion of the content airing between 05:00:12, etc. However, timedrifts in the airings of media content items across various geographiclocations, even if minor, may result in inaccuracies that hinderconsistent segmentation across a population of media devices using acommon clock.

In one embodiment, each media device of a population of media devicesmay be configured to segment media content items based on duration oftime that may not be relative to any specific clock. For example, eachmedia device of a population may be configured to identify each segmentwithin a media content item as ten seconds of content. However, becausethe media devices may not begin counting each ten second segment fromexactly the same starting position, any two particular media devicesfrom the population may or may not generate the same segments for thesame media content item. The population of media devices may then, forexample, be dynamically grouped into a number groups, each groupincluding devices that are defining segments for the media content itemat the same boundaries.

In an embodiment, each media device of a population may be configured tosegment media content items based on a duration of time and thesegmentation of each media device may be synchronized by a centralizedmedia content management system. For example, each media device mayinitially define the boundaries of one or more segments based on aspecified amount of time (e.g., ten seconds). As described in moredetail below, a media device may send to the media content managementsystem one or more segment identification values for the initiallydefined segments. Based on the segment identification values, the mediacontent management system may send data to the media devices thatenables the media devices to synchronize the segmentation. For example,if it is determined that a particular media device is defining segmentsthat are one second out of alignment with other media devices, the datamay instruct the particular media device to define one nine secondsegment and then resume defining ten second segments so that the segmentboundaries are then synchronized.

As another example of a media content management system assisting apopulation of media devices to synchronize segmentation, the mediacontent management system may synchronize a media device by receivingfrom the media device segment identification values based on a number ofpossible segment boundaries. Based on the segment identification values,the media content management system may send data instructing the mediadevice to use one instance of the segment boundaries from the set ofpossible segment boundaries. For example, if a media device isconfigured to identify segment boundaries based on ten seconds of time,the media device may generate segment identification values (e.g., ahash value, checksum, etc.) for a number of overlapping ten second spanswithin a media content item. The media device may generate a segmentidentification value for each of the spans, send the segmentidentification values to the media content management system, and themedia content management system may select one of the segments for themedia device to use (e.g., based on which segment corresponds to segmentboundaries used by other media devices). The media device may thenreceive instructions from the media content management system to use theselected segment boundaries and generate additional segments based onthe selected boundaries.

As another example, a population of media devices may collaborativelysynchronize segment identification amongst the devices and withoutcoordination of a centralized media content management system. Forexample, each media device of a population may identify one or moresegments of a media content item, generate segment identification valuesfor the segments, and send the values to one or more other media devicesreceiving the same media content item. Based on the segmentidentification values, the media devices may collectively determineparticular boundaries on which to base the identification of othersegments. For example, the media devices may select segment boundariesthat were generated by the greatest number of the media devices, orbased on any other selection criteria.

As another example, a population of media devices may be configuredbased on a pre-defined segmentation rule that defines each segment of amedia content as one or more particular collection of frames within themedia content item. In one embodiment, each collection of frames may bebased on a Moving Picture Experts Group (MPEG) standard specificationfor audio and video formatting. For example, a segment may be defined asone or more “group of pictures” (GOP) included in the media contentitem. In the context of the MPEG-4 standard, for example, a GOPgenerally refers to a group of successive frames within a video stream,where each frame of a media content item is included in one GOP.Metadata included with the media content item may define the GOPboundaries for a particular media content item.

Another example of a segmentation rule may define each segment based ontiming metadata information included with media content items. Forexample, media content items encoded based on an MPEG standard typicallyinclude presentation timestamp (PTS) values that indicate an overallclock reference for portions of a media content stream. A media contentitem thus may be segmented based on ranges of presentation timestamp(PTS) values (e.g., every span of 1000 in PTS values) within the mediacontent item. As another similar example, media content items may besegmented based on ranges of program clock reference (PCR) values, whichrepresent another timing metadata field commonly included with mediacontent items. As yet another example, a segmentation rule may be basedon a combination of two or more different elements associated with amedia content item. For example, each segment may be defined as a numberof GOPs not to exceed a specified span of PTS values.

In general, a media device may identify segment boundaries within amedia content item sequentially as a media content stream is received bythe media device. For example, if a segmentation rule defines eachsegment based on ranges of 1000 in PTS values, a media device mayidentify the boundaries of a first segment within a media content itemas a portion of the media content associated with PTS values between 0and 999, a second segment defined by a portion associated with PTSvalues between 1000 and 1999, and so forth. The segment boundaries maybe identified in real-time as a media content item is received, or at alater time after the media device has received some or all of a mediacontent item. In other examples, a media device may identify segmentboundaries out of order with respect to the media content item,selecting particular portions of a media content from which to defineone or more segments.

In an embodiment, the size and/or duration of segments defined by eachmedia device of a population of media devices may or may not be uniformacross the entire population. For example, each media device may includeone or more device efficiency profiles that define, among otherattributes, how each particular media device identifies segmentboundaries. For example, based on one particular device efficiencyprofile associated with a particular media device, the media device maybe configured to generate segments that are each three seconds induration, while another media device associated with a different deviceefficiency profile may be configured to generate segments that are eachsix seconds in duration. An upload management module 306 or othercomponents of a service provider system 204 may thus include logicconfigured to assemble segments of different sizes into a complete copyof a media content item for storage.

At block 506, the media device may generate one or more values thatidentify the defined segments, also referred to herein as segmentidentification values. In general, a segment identification value can beany value that serves to identify a segment relative to other segments.In one embodiment, for example, segment identification values may beused to compare segments to other segments another for “sameness,” thesameness of two segments corresponding to whether the segments representthe same, or substantially the same, portion of a media content item. Asdescribed in more detail hereinafter, one or more components of acloud-based media content management system may compare segments usingsegment identification values to determine, for example, whether thesystem has received a copy of the same segment from another media deviceand to determine whether to instruct media devices whether to uploadparticular segments to a cloud storage system.

In one embodiment, a segment identification value may include a hashvalue based on a portion or all of the data comprising a segment. A hashfunction used by a media device to generate such a value generally maybe any function that maps all or a portion of the data comprising thesegment to a fixed size value. For example, a hash function may beapplied to all of the data comprising a segment, including the mediadata (e.g., video and audio data) and any metadata associated with thesegment (e.g., closed captioning data, timing information, etc.), togenerate the segment identification value. In general, assuming theoriginal data is the same for two segments defined by two differentmedia devices, the segments map to the same hash value, while twodifferent segments map to different hash values. This property can beused (e.g., by a media content management system 102) to determinewhether two separately defined segments represent the same segment bycomparing only the hash values generated for the segments instead of theentire data contents of the segments, thereby increasing the speed ofsuch comparisons. Further, by generating a hash value from all of thedata comprising a segment, any difference between two segments can bedetected (e.g., because the segments represent a different portion of amedia content item, or because one of the segments includes a “glitch”or other data corruption) because any such difference results in adifferent hash value. Depending on a particular implementation, thislevel of comparison may or may not be desired.

In an embodiment, rather than generating a segment identification valuefrom the entire data comprising a segment, only a portion of the segmentdata may be used. For example, a media device may generate a hash valuebased only on the data from an audio track or a closed caption trackassociated with the segment. As another example, a media device maygenerate a segment identification value based on a portion of the datacomprising the segment, but that spans the entire time span of thesegment. For example, a segment identification value may be based ondiscrete cosine transform (DCT) coefficients for a set of MPEG framesthat span the entire segment. In general, generating a segmentidentification value from only a portion of the data comprising asegment may be computationally less expensive than using the entire dataof the segment; however, because only a portion of the data is used togenerate the hash value, differences in other portions of the segmentdata from one segment to another may go undetected.

As another example, a media device may generate a segment identificationvalue for a particular segment by concatenating one or more series ofdata derived from a particular segment. For example, a segmentidentification value may be generated by concatenating a series of PCR,PTS, or other metadata values associated with the segment. As yetanother example, a hash function may be applied to a data series derivedfrom the segment. Other examples of data that may be used to generate asegment identification value may include in-band data, serviceinformation (SI), and/or event information tables (EIT).

In an embodiment, a segment identification value may include a visualand/or audio fingerprint of the segment. In general, generating a visualfingerprint may involve generating a value based on one or more renderedframes from the video data included in a particular segment. Similarly,generating an audio fingerprint may include generating a value based onaudio data. The use of fingerprinting to identify media content items isdescribed in U.S. Pat. No. 8,417,096, entitled “Method And An ApparatusFor Determining A Playing Position Based On Media Content Fingerprints,”which is owned by the Applicant and is hereby fully incorporated byreference. The use of in-band data to identify media content items isdescribed in U.S. Pat. No. 7,873,982, entitled “Method And Apparatus ForCreating And Viewing Customized Multimedia Segments,” which is owned bythe Applicant and is hereby fully incorporated by reference.

In one embodiment, in addition to generating a segment identificationvalue, a media device may perform one or more error checks on a segmentto identify possible data corruption. If a media device detects that asegment exhibits one or more instances of data corruption, for example,the media device may report the error to a media content managementsystem to assist the system in determining whether the media device isto upload a particular segment to cloud storage. One example of an errorcheck may include detecting a discontinuity or other error in metadatavalues associated with the segment, such as with PCR and/or PTS values.In general, PCR and PTS values increase monotonically with time over thesegment, and the media device may flag a segment if the media devicedetects a decreasing pattern of PCR or PTS values.

At block 508, the media device sends one or more segment identificationvalues to a media content management system. For example, an uploadermodule 416 of a media device 108 may send the segment identificationvalues for segments defined by the media device to a service providersystem 204 via one or more networks 104. A media device 108 may sendeach generated segment identification value individually, or a collectedgroup of segment identification values corresponding to multiplesegments may be sent together. A media device 108 may send segmentidentification values separate from other data, or the segmentidentification values may be included with other data sent to the mediacontent management system, including portions of the media content fromwhich the values were derived.

In one embodiment, instead of sending segment identification valuesindividually or in groups, a media device may send one or more valuesderived from multiple segment identification values. For example, amedia device may receive an entire media content item, generate segmentidentification values for some or all of the segments defined for themedia content item, and send a checksum or other value derived from thesegment identification values to a media content management system. Themedia content management system may then use the checksum value todetermine whether the media content item is the same as one alreadystored by the content management system. Sending a single checksum valuerather than a group of segment identification values may further reducean amount of data uploaded from each device.

Depending on various factors, a media device may be configured to sendsegment identification values for each segment defined by the mediadevice, or for less than all segments defined. In one embodiment, amedia device may determine when and/or how frequently to send segmentidentification values based on one or more device efficiency profiles.For example, a device efficiency profile for one media device mayinstruct the media device to send segment identification values for thefirst N defined segments of a particular media content item. The profilemay further instruct the media device to send segment identificationvalues for only every other defined segment if the media device receivesan indication that some number of previously defined segments were notrequested for upload. For example, if a particular media device sends toa media content management system segment identification values for thefirst hundred segments of a media content item and receives anindication that the media content management system has previouslystored those segments (e.g., possibly indicating that other mediadevices previously uploaded the same media content item), then based ona device efficiency profile, the media device may start generatingand/or sending segment identification values for only every othersegment, every third segment, etc.

At block 510, in response to sending the one or more segmentidentification values to the media content management system, the mediadevice may receive data from the media content management systemindicating whether to upload one or more particular segments of the oneor more identified segments. For example, the data generally mayrepresent upload policy information that includes criteria for a mediadevice to upload particular segments, or instructs the media device toupload particular segments. As described in more detail in reference toFIG. 6, the media content management system may generate the commanddepending on whether or not the system has already stored the samesegment, or is currently receiving a sufficient number of copies of thesame segment from other media devices, or based on other factors.

At block 512, the media device determines whether to upload one or moredefined segments. For example, the media device may determine to uploadone or more segment based on a command received from the media contentmanagement system. If the command instructs the media device to uploadthe segment, then at block 514, the media device sends the segment to acloud storage system associated with the media content management system102. For example, the media device may upload the segment data to astorage and transcoding module 214 of a service provider system 204, ordirectly to a separate cloud storage system 206 and/or storage at anoperator headend 202. If the command instructs the media device not toupload the segment (e.g., because a sufficient number of copies of thesame segment already exist in cloud storage), then flow 500 proceeds toblock 504 and the media device can define another segment of the mediacontent item, if any segments remain. In an embodiment, a media device108 may continue the process of flow 400 until the end of a mediacontent item, or until a user manually ends the recording.

In one embodiment, a media device may upload one or more segments of amedia content item out of order relative to an order in which thesegments are received and/or defined by the media device. For example,in the flow 500 described above, a media device may sequentiallyidentify segment boundaries as a media content item is received.However, a media device may also identify and upload segmentsnon-sequentially. For example, a service provider system 204 mayinitially instruct a particular media device not to upload a particularsegment because the same segment is currently being uploaded by one ormore other media devices. However, the service provider system 204 maysubsequently determine that the copies of the segment received fromother media devices include one or more corruptions. In response, theservice provider system 204 may request the particular media device toupload the segment at a later time. In this manner, the service providersystem 204 may receive a complete and uncorrupted copy of a mediacontent item even if the initially uploaded segments include one or moredetected corruptions.

In one embodiment, a media device may be configured to identify andpossibly upload one or more segments of a media content item in eitheran “active” or “passive” mode. In general, a media device may identifyand upload segments in an active mode by processing the media content asthe media content is received by the media device. For example, a mediadevice receiving a live television feed may define segments and uploadsegments as directed by a service provider system 204 at the same timeas the media device is receiving the television feed. As anotherexample, a media device may define and upload segments in a passive modewhere the media device defines and possibly uploads media contentsegments at a time after the media content is received. For example, amedia device may receive and record a particular media content item inits entirety, and subsequently define segments.

In one embodiment, a service provider system 204 may instruct particularmedia devices to operate in an active or passive mode based on collecteddevice performance data. For example, if a service provider system 204determines that a particular media device has or is currentlyexperiencing relatively slow network upload speeds, the system mayinstruct the media device to operate in a passive mode. Conversely,media devices that are determined to exhibit particularly strong networkupload speeds may be instructed to operate in an active mode. In anembodiment, instead of receiving instructions from a service providersystem, a media device may determine whether to operate in an active orpassive mode based on device profile information stored at the mediadevice. For example, a device profile may indicate whether a mediadevice is to operate in an active or passive mode depending on detectedcurrent network or other operating conditions associated with the mediadevice.

In the example process illustrated by FIG. 5, a media device generallydetermines whether to upload one or more segments based instructionsreceived from a service provider system, the instructions based onsegment identification values generated and sent by the media device tothe service provider system. In other embodiments, media devices maydetermine whether to upload particular segments of a media content itembased on one or more other processes that may or may not includeinteraction with the service provider system.

In one embodiment, a media device may determine whether or not to uploadparticular segments of a media content item without generating and/orsending segment identification values to a service provider system. Forexample, a media content management system may determine that one ormore media devices of a population of media devices are each recordingthe same media content item and send instructions for uploading themedia content item to each of the media devices. The instructions mayassign to one or more of the media devices a portion of the mediacontent item to upload. For example, one media device may receiveinstructions to upload the first ten segments, a second media device mayreceive separate instructions to upload the next ten segments, etc. Ingeneral, any division of segments amongst media devices of thepopulation of media devices may be instructed. In this manner, eachmedia device may receive the media content item, define segments of themedia content item, and determine whether to upload one or more of thesegments based on instructions received from the service providersystem, and without sending segment identification values for eachdefined segment.

In an embodiment, a media device may determine whether or not to uploadparticular segments of a media content item based on segmentidentification values received from a media content management system.For example, a media content management system may generate the segmentidentification values for each media content item selected for recordingby a media device of a population of media devices. The media contentmanagement system may send the segment identification values to themedia device and the media device may use the values received from themedia content management system to determine whether any segments of thecopy of the media content item recorded by the media device differ froma version stored by the media content management system. The mediadevice may then upload only those segments that differ from the copy atthe media content management system. In another example, media devicesmay upload selected segments of media content items to a media contentmanagement system, and the system may generate segment identificationvalues for the segments to determine whether or not to store or discardthe uploaded segments.

In one embodiment, a population of media devices may upload a mediacontent item scheduled for recording by the media content items bycoordinating the upload amongst the devices and without receiving uploadinstructions from a centralized service provider system. For example, amedia device that schedules a recording of a media content item maydiscover other media devices that have scheduled a recording of the samemedia content item (e.g., by the media devices periodically broadcastingrecording schedules, obtaining recording schedules of other devices froma service provider system, etc.). The media devices may then communicateand determine which media devices are to upload which segments, forexample, based on an equal upload sharing policy, based on measuringnetwork statistics at each media device, or based on any other uploadingpolicy determined amongst the media devices.

In one embodiment, a media device may individually determine whether toupload one or more segments without coordination with a media contentmanagement system or other media devices. In an embodiment, one or moreof the upload management techniques described above may be used incombination. For example, each media device may individually determineone or more segments for potential upload. The one or more segmentsselected by each media device may be filtered out in collaboration withother media devices. For example, the media devices may determine asingle media device to upload each segment that is selected by two ormore media devices. Each of the media devices may then send a filteredlist of segments to a media content management system, which may furtherfilter the list of segments for each media device.

3.2. Cloud Storage of Media Content

As described above in reference to FIG. 5, each media device of apopulation of media devices may be configured to upload segments ofmedia content items received by the media devices to a media contentmanagement system. In one embodiment, the media content managementsystem may receive segment identification values from various mediadevices, determine based on the segment identification values whether toinstruct particular media devices to upload the corresponding segments,and store uploaded segments and other metadata to track media contentitems recorded by particular media devices.

In one embodiment, metadata generated by a media content managementsystem to track media content items recorded by particular media devicesmay include a “manifest” of uploaded segments. As used herein, amanifest generally refers to a file, database, or other data structurethat includes information indicating, for each user account and mediacontent item recorded by a media device associated with the useraccount, a list of the segments that comprise the media content item forthat user account and media device. By maintaining a manifest ofsegments for particular user accounts and/or media devices, the mediacontent management system enables users access to copies of mediacontent items recorded by the user that are the same, or substantiallythe same, as the versions of the media content items originally receivedby the users' media devices, including individual variations that mayresult from local programming differences, interference or datacorruption, etc. In an embodiment, the media content management systemmay assemble a media content item from a collection of segments forsubsequent playback by using the manifest to identify particularsegments and an ordering of the particular segments.

FIG. 6 depicts an example flow diagram for managing uploads of mediacontent items from a population of media devices. For example, theprocess illustrated by FIG. 6 may be implemented by a cloud-based mediacontent management system to manage uploads of media content items froma population of media devices 108.

At block 602, the media content management system receives, from aparticular media device associated with a user account, one or moresegment identification values for one or more segments of a mediacontent item. For example, the segment identification values may begenerated by a media device 108 that is currently receiving, or haspreviously received, a media content item for viewing and/or recording,as described in reference to block 506 of FIG. 5. An identification of auser account associated with the media device may be included with thesegment identification values, or the user account may be identifiedbased on other information (e.g., a device and/or user accountidentifier sent with one or more other requests).

At block 604, the media content management system determines, based onthe one or more segment identification values, whether a copy of thesame one or more segments exists in a cloud storage system. For example,a cloud storage system may store, separately or in association with thecorresponding media content segments, segment identifiers of mediacontent segments currently stored by the cloud storage system or thatare currently being uploaded to the cloud storage system by other mediadevices. Thus, a media content management system may determine whether acopy of the same segment is stored or is currently being received fromanother media device by comparing the one or more received segmentidentification values against segment identification values previouslyreceived from other media devices.

In one embodiment, a cloud-based management system may determine notonly if a copy of the same segment currently exists in cloud-basedstorage, but if a sufficient number of copies of the segment arecurrently stored or are currently being uploaded. For example, acloud-based media content management system may be configured to requesttwo or more separate uploads of each media content segment from two ormore separate media devices. The system may request separate uploads,for example, to improve the chance that a complete and error-free copyof each segment is received by the system. If the system receives two ormore copies of a segment that are determined to be of the same quality,for example, the system may deduplicate storage of the segments bydeleting one or more of the identical copies.

In one embodiment, determining if a copy of the same segment currentlyexists in cloud storage may include determining if a copy having thesame, or substantially the same, quality currently exists in storage.For example, based on the segment identification values or otherinformation received from a media device for a particular segment, anupload management module 306 may determine that while a similar copy ofthe same segment currently exists in cloud storage, one of the segmentsincludes one or more data corruptions that cause the segments to differ.In this and other instances, the upload management module 306 of aservice provider system 204 may or may not request a media device toupload a separate copy of the segment including the data corruptions.For example, based on content rights issues or other factors, an uploadmanagement module 306 may be configured to request an upload of two ormore copies of the same segment if the two or more copies aresufficiently different from one another so that the copy of the segmentstored for each of the respective media devices is sufficiently the sameas the segment originally received.

In one embodiment, to determine whether to request separate uploads of asegment from different media devices, an upload management module 306may assign a quality score to one or more segments identified byparticular media devices. For example, a media device that receives andidentifies a segment of a particular media content item that includesfew or no detected data corruption/signal interference issues mayreceive a “good” score for that segment. On the other hand, if a mediadevice received and identified the same segment with a significantnumber of detected data corruptions, the segment may receive a “bad”score. In one embodiment, the quality of a particular segment may bedetermined in various ways, including detecting a number of datacorruptions (e.g., issues with PCR/PTS numbering, corrupted metadata,etc.), by comparing the sameness of various segment identificationvalues, by comparing fingerprints generated for each segment, etc.

As indicated above, a comparison of the quality of two versions of asegment may determine how many copies of a particular segment a mediacontent management system stores. For example, if the system determinesthat two versions of the same segment vary slightly, but are both of“good” quality, the system may store only one copy of the segment anduse the copy interchangeably for requesting media devices. On the otherhand, if the system determines that one media device recorded aparticular segment of “good” quality, and a second media device recordeda “bad” quality version of the same segment, the system may store aseparate copy of each quality version. If a user associated with thefirst media device subsequently requests the media content item forplayback, the user's device may receive the “good” quality version forthat segment, while the second media device receives the “bad” qualityversion for the same segment. In other implementations, a media contentmanagement system may store and send to any device a copy of eachsegment that is of the best quality, regardless of the version of themedia content item originally received by each user's media devices.

In one embodiment, a media content management system may determinewhether a copy of the segment exists based on grouping media devicesinto two or more “zones.” For example, a population of media devices maybe grouped into a number of zones that correspond to various geographicareas or other grouping characteristics. A media content managementsystem may be configured to generate a fingerprint from a segmentreceived from each zone and compare the fingerprints to those derivedfrom segments received from media devices in other zones. In thismanner, portions of a media content item that are identical across thezones (e.g., the content of a television program) may be checked forupload and cloud storage from media devices in each zone lessfrequently, while portions of the media content item that differ acrosszones (e.g., regional commercials) may be uploaded from a device in eachzone.

At block 606, if the media content management system determines that asufficient number of copies of the one or more identified segments existin cloud storage, then at block 608, the system sends a command to themedia device instructing the media device not to upload the segment tocloud storage. At block 608, the media content management system stores,in a manifest that includes data for the user account associated withthe media device, an association between the media content item and anexisting copy of the segment. Thus, a copy of the media content itemstored for the particular user account refers to the existing and commoncopy of the particular segment, and an additional copy of the samesegment is not requested from the particular media device. Examples ofstoring a manifest of segments for particular media content items andfor particular user accounts are described hereinafter in reference toFIG. 7A, FIG. 7B, and FIG. 8.

At block 606, if the media content management system determines that asufficient number of copies of the segment do not currently exist incloud storage, then at block 610 the system may send a command or otherdata to the media device instructing the media device to upload a copyof the segment to cloud storage. For example, the media contentmanagement system may not locate a copy of the segment corresponding tothe received segment identification values because it is the first timea media device among a population of media devices has recorded thatparticular segment, or because there is some difference in the segmentfor the particular media device sending the request.

In an embodiment, multiple media devices may send one or more segmentidentification values for the same segment within a relatively smallwindow of time. For example, if a new television program is airing and alarge number of devices have each scheduled a recording of the programwhen it airs, each of the media devices may send the same segmentidentification values to the media content management system atapproximately the same time when the program begins. Thus, a mediacontent management system may select one or more media devices to uploada particular segment from among a number of possible media devices.

In one embodiment, when multiple media devices send segmentidentification values for the same media content segment atapproximately the same time, a media content management system maysimply select the one or more media devices from which the segmentidentification values are first received, or by randomly selecting oneor more media devices to upload the segment. As another example, themedia content management system may select one or more media devices toupload the segment based on factors related to the upload capabilitiesof each media device. For example, the upload capabilities may bedetermined based on one or more device information and/or performancemeasurements, including network capacity and other capabilities of eachdevice (e.g., a type of the device, a type of network used by thedevice, measured upload speeds, current signal strength, bit errors,etc.) and/or historical data for each device (e.g., upload error rates,uploaded segment quality, etc.). A media device may, for example,periodically generate reception/performance measurements for the mediadevice before and/or during a media content item recording and send themeasurements to the media content management system to assist with adetermination of devices to upload from. In one embodiment, a mediacontent management system may designate, based on network capabilitiesand historical data, particular media devices as “preferred” uploadersand select those media devices for uploads when possible.

At block 612, in response to instructing a media device to upload aparticular segment to cloud storage, the media content management systemstores, for the user account associated with the media device, anassociation between the media content item and the uploaded segment.Similar to block 608, the media content management system may store theassociation between the media content item and the uploaded segment in amanifest that includes information for the user/media device accountassociated with the media device.

To illustrate some of the concepts described above, FIG. 7A, FIG. 7B,and FIG. 8 each illustrate various aspects of managing segments of amedia content item uploaded from a population of media devices.

FIG. 7A depicts an example representation of a population of mediadevices receiving a media content item from two different sources 702and 704. In FIG. 7A, sources 702 and 704, for example, may eachrepresent a separate television headend facility that is capable ofreceiving, processing, and distributing media content signals to asubset of a population of media devices. Each of sources 702 and 704may, for example, be located in a different geographic area. Althougheach of sources 702 and 704 may distribute the same media content items(e.g., the same television programs, movies, etc.) to the population ofmedia devices, differences may nevertheless exist in the media contentitems received by the media devices. For example, the differences mayinclude differences in commercials or other local programming presentedin specific geographic areas and interspersed in the media contentitems. As another example, differences may result from interference orcorruption issues that are specific to a particular source and/or mediadevice(s).

The example of FIG. 7A illustrates a scenario where four differentversions of a same media content item are transmitted to a population ofmedia devices. The first version of the media content item istransmitted to a media device group 706 which includes a plurality ofmedia devices that may be associated with any number of separate useraccounts. A second version of the media content item is transmitted to asingle media device 708. A third version is transmitted to a mediadevice group 710 that is different from media device group 706, and afourth version is transmitted to a single media device 712 that isdifferent from media device 708. As indicated above, four differentversions of the same media content item may differ due to localprogramming differences (e.g., media device group 706 may receivedifferent commercials from media device group 710) or isolatedinterference/corruption issues (e.g., major or minor corruptions in thedata transmitted to media device 708 and media device 712).

FIG. 7B depicts an example representation and resulting storage of thedifferent versions of a media content item received by each of the mediadevices as depicted in FIG. 7A. In FIG. 7B, for example, each of thefour different versions of the media content item is represented by aseparate span of the media content item depicted to the right of thename of the media device(s) receiving that particular version. Forexample, each of the media devices of media device group 706 received aversion of media content item beginning with a labeled portion 714,followed by an unlabeled portion, followed by a labeled portion 722, andfollowed by another unlabeled portion. Labeled portions 714 and 722, forexample, may represent two separate portions of the media content itemcontaining commercials, while the unlabeled portions represent portionsof a television program airing in between the commercials.

Similarly, a media device 712 received a version of the media contentitem beginning with a portion 716, followed by an unlabeled portion,followed by a portion 718, followed by an unlabeled portion, followed bya portion 722, and followed by another unlabeled portion. Similar tomedia device group 706, portions 716 and 722 may represent commercialsreceived by media device 712 and interspersed into a television program.Portion 718, for example, may represent one or more segments of themedia content item where media device 712 received corrupted data thatwas not experienced by other devices. Similarly, portion 720, forexample, may represent one or more segments of the media content itemwhere media device 708 experienced a signal interference issue. In eachinstance, the corrupted data/signal interference may have displayed tothe user as a small “glitch” or other defect in the media content andwhich may or may not have been easily perceived by the user viewing thevideo content.

Stored copy 724 illustrates an example representation of the data thatmay be stored by a media content management system for the media devices706-712 receiving the media content item, as described above. Ingeneral, stored copy 724 illustrates an example of the deduplication ofthe four different versions of the media content item received by themedia devices 706-712. For example, as illustrated by the top row ofstored copy 724, a copy of portion 714 and portion 722 are stored alongwith the unlabeled portion in between those spans common to all of themedia devices. In addition, portions 716, 718, and 720 are stored toaccount for differences seen by various media devices of the population.Each portion depicted in FIG. 7B may be comprised of one or moresegments defined by the media devices. Thus, only one copy of commonsegments may be stored, while separate copies of differing segments forparticular media devices are stored as well. In this manner, asubstantially exact copy of a media content item as originally receivedby a media device may be stored, while still reducing the total amountof data stored for the media content item.

The stored copy 724 may further illustrate the result of segmentdeduplication performed by a service provider system 204. For example,multiple copies of portion 714 may initially have been received frommedia devices of media device group 706. After the multiple copies arereceived and initially stored, a service provider system 204 maydetermine that each of the multiple copies are identical and delete allof the copies except for one from storage. In this manner, the serviceprovider system 204 may initially receive multiple copies of segments tobetter ensure that least one error free copy is received, butsubsequently de-duplicate the extra copies to conserve space in cloudstorage.

FIG. 7 depicts an example of how a media content management system canreduce an amount of storage space used to store different versions of amedia content item received by a population of media devices. FIG. 8depicts an example representation of how a collection of segmentscomprising a media content item, such as those depicted at the bottom ofFIG. 7B, may be stored in order to enable a media content managementsystem to reproduce a copy of a media content item for particular mediadevices. FIG. 8, for example, depicts a representation of segmentsstored for a particular media content item relative to four differentmedia devices A-D. The example depicted in FIG. 8, for example, may besimilar to the type of information stored for particular user accountsin a manifest, as described above in relation to FIG. 6.

In FIG. 8, for example, a media device 802 may have recorded a mediacontent item 810, depicted as a collectio602 n of linked segments. Thefirst segment identified by media device 802 was segment 812, labeledwith a segment identification value of “846d”. The second segmentidentified by media device 802 was segment 814, labeled with a segmentidentification value of “5e02,” and so forth. As another example, thefirst segment identified by a different media device 804 was alsosegment 812. Thus, because a media content management system determinedthat each of media device 802 and media device 804 reported recordingthe same segments 812 and 814 based on segment identification valuesreceived from the devices, the system may store only one copy ofsegments 812 and 814. The manifest for the user accounts associated withmedia device 802 and media device 804, respectively, each may includereferences or pointers to segments 812 and 814 as the first two segmentsof the media content item 810 for those user accounts. Furthermore, onlyone of media devices 802 and 804 (or possibly another media device notdepicted) may have uploaded each of segments 812 and 814 to the cloudstorage storing the segments.

As another example, media device 806 identified a different segment 816as the first segment of the media content item 810. Media device 806 mayhave identified a different segment from media device 802 and mediadevice 804, for example, because of local programming differences,broadcast timing differences, momentary interference, or any otherissues that caused media device 806 to receive a different version ofthe first portion of the media content item. However, eventually mediadevice 806 synced up with media device 802 and media device 804 andreported recording the same segment 814.

As illustrated by FIG. 8, for each media content item recorded by amedia device, a possibly different series of segments may comprise themedia content item for that media device, and for a user accountassociated with that media device. Segments that are identified bymultiple media devices may be stored only once and referenced in themanifests for multiple user accounts associated with the media devices.In this manner, the amount of data stored by a media content managementsystem is reduced, while retaining any individual differencesencountered by particular media devices, thereby enabling the system tosubsequently send a version of the media content item that issubstantially the same as the version of the media content itemoriginally recorded by each media device. Furthermore, copies of mediacontent items stored locally at media devices may be deleted afterrecording to free up space, while those same media devices may continueto access the media content items from cloud-based storage.

3.3. Media Content Playback

In one embodiment, a cloud-based media content management system enablesusers to schedule recordings of media content items at a first mediadevice (e.g., a DVR, etc.) and to subsequently access the recorded mediacontent item on other media devices (e.g., other DVRs, mobile devices,gaming devices, etc.). As described above, access to media content itemsacross different media devices may be facilitated by cloud storage ofmedia content items. In general, a cloud-based media content managementsystem may manage access to media content items across media devicesbased on associated the recorded media content items with particularuser accounts. FIG. 9 is a flow diagram illustrating an example processfor a cloud-based media content management system to manage access tomedia content items across media devices.

At block 902, a server of a media content management system receives,from a media device associated with a user account, data indicating thatthe media device received a request to schedule a recording of a mediacontent item. The media device may send the data, for example, inresponse to the media device receiving input at the media device orindirectly from another media device to schedule the recording.

In response to receiving the data indicating that the media devicereceived a request to schedule a recording of the media content item,the media content management system may cause a copy of the mediacontent item to be stored in a cloud storage system. In one embodiment,the system may cause a copy of the media content item to be stored in acloud storage system by requesting a distributed upload of the mediacontent item from a population of media devices, as described above inreference to FIGS. 5-8. As another example, the media content managementsystem may directly obtain the media content item from a content source106. For example, an operator headend 202 and/or cloud storage system206 may directly receive and store a copy of the media content item froma content source 106.

At block 904, the server of the media content management systemreceives, from the same media device, or from a different media deviceassociated with the same user account, a request to play the recordedmedia content item. For example, the user may later desire to view therecorded television program using a mobile device, possibly when theuser has moved outside of the user's home. In response to user input atthe mobile device requesting to view the media content item, the mobiledevice may send a request for the media content item to a cloud-basedmedia content management system.

At block 906, in response to the request, it is determined whether theuser account has access to play the media content item. In oneembodiment, determining whether the user account has access to play themedia content item may include determining whether the user previouslyrequested a recording of the same media content item using one or moreof the user's other media devices. In an embodiment, determining whetherthe user account has access to play the media content item may includedetermining whether the media content item is currently available forplaying from a content source 106, such as a VOD library. In anembodiment, determining whether the user account has access to play themedia content item may include determining whether the user previouslyscheduled a recording of the content item. For example, even if the userhas subsequently deleted a recorded media content item, the mediacontent item was deleted based on a deletion rule, or the media contentitem was not recorded due to a tuner conflict, the system may determinethat the user has access to the media content item if the userpreviously selected the media content item for recording.

At block 908, in response to determining that the user account hasaccess to play the media content item, the media content managementsystem causes the user's media device to play the media content item.For example, the media content management system may cause the mediadevice to play the media content item by causing a copy of the mediacontent item to be streamed or downloaded from a cloud storage system tothe media device. The media content management system may be configuredto determine whether the user currently has a recorded copy of a mediacontent item before allowing the user to access a copy of the mediacontent item on another device, for example, in order to comply withapplicable content rights related to distributing copies of mediacontent items.

In general, a cloud-based media content management system may send amedia content item to a media device by streaming, downloading, ortransmitting the media content in any other manner. If a media contentitem is uploaded to a cloud storage system as a collection of segments,one or more processing steps may be performed on the collection ofsegments before sending the media content item to media devices. FIG. 10depicts an example flow 1000 for providing access to media content itemsuploaded from a distributed population of media devices, according to anembodiment.

At block 1002, a cloud-based media content management system receives,from a media devices associated with a user account, a request to accessa media content item recorded by a user associated with the useraccount. For example, the user may select the media content item from aninterface displayed at the media device and which lists media contentitems previously selected for recording by the user at the same mediadevice, or at another media device associated with the same useraccount. The list of recorded media content items may be displayed tothe user, for example, based on the user providing user accountinformation (e.g., a username and password) at the media device.

At block 1004, the media content management system locates, based on therequested media content item and the user account, a series of segmentsfor the media content item. As described in reference to FIG. 8, forexample, a media content management system may store a manifest for eachuser account that indicates, for each media content item recorded by theuser associated with the user account, a series of segmentscorresponding to the media content item. The information, for example,may include a series of segment identifiers that enable the system tolocate each of the segments in one or more associated cloud storagesystems.

At block 1006, the media content management system prepares the mediacontent item for delivery to the requesting media device. In oneembodiment, preparing the media content item for delivery may include“stitching” together a series of separately stored segments into acontinuous stream of data. In general, stitching the segments togetherrefers to combining some or all of separately stored segments into acontinuous data stream that can be sent to the requesting media device.For example, stitching the segments together may refer to generating anMPEG content stream based on a plurality of separately stored segments.In another embodiment, the stored segments may be sent separately to themedia device and stitched together by the requesting media device fordisplay. As another example, preparing the media content item mayinclude transcoding the segment data for delivery to specific types ofmedia devices (e.g., a particular transcoding may be selected forparticular types of mobile devices, gaming devices, etc.). Thetranscoding of the media content for particular types of media devicesmay include converting the media content to a different bitrate,converting the media content to a different encoding (e.g., singleprogram transport stream (SPTS) into HTTP live streaming (HLS)), orperforming any other transformations.

In one embodiment, preparing the media content item for delivery mayinclude substituting one or more portions of the media item, overlayinginformation on the media content, or other modifications. For example,preparing the media content item may include determining one or moreportions of the media content item corresponding to advertisements, andremoving the advertisement portions or replacing the advertisements withalternative advertisements. As another example, preparing the mediacontent item for delivery may include creating a condensed version of amedia content item. For example, if the media content item correspondsto a sporting event, preparing the media content item for delivery mayinclude assembling one or more “clips” based on the segments that mayrepresent highlights or other portions of particular interest within themedia content item. As yet another example, overlaying information onthe media content may include adding textual information (e.g., actornames, ratings information, location names, closed captioning, etc.) onone or more frames of the media content.

At block 1008, the media content management system sends the mediacontent item to the requesting media device. The media contentmanagement system may send the media content item by streaming ordownloading the item to the device, by providing access to the mediacontent item via a content delivery network (CDN), or by providingaccess to the media content from any other type of cloud storage system.For example, a streaming and hosting module 312 may stream the mediacontent item directly to the requesting media device 108, or streamingand hosting module 312 may send a link or other reference enabling themedia device 108 to access the media content item from a separate cloudstorage system or other media content source.

The steps described above in reference to blocks 1002-1008 may occurconcurrently with a media content management system receiving a mediacontent item from a population of media devices. For example, as soon asthe media content management system receives a first segment of aparticular media content item, the system may begin preparing andsending the received segments to other requesting media devices, priorto an entire copy of the media content item being received.

In one embodiment, providing user access to a media content item mayinclude providing access to a higher quality version of a media contentitem than the quality of the media content item originally recorded. Forexample, a user initially may schedule a recording of a media contentitem in standard-definition (SD) quality, despite the user also havingaccess to a high-definition (HD) quality version of the same mediacontent item on another channel. In this example, when the user requestsaccess to the media content item from another device, the media contentmanagement system 102 may send an alert to the requesting media deviceindicating that the media content item is available for streaming in HDinstead of SD as originally recorded. The ability for a media contentmanagement system to offer a user a higher quality version of apreviously recorded media content item may depend on whether the user'saccount includes access to the HD version based on the user's contentsubscriptions.

In one embodiment, a media content management system providing access toa media content item may further include providing suggestions to theuser for media content items related to the requested media contentitem. For example, if the user requests access to a particulartelevision show previously recorded by the user, a media contentmanagement system may send information indicating other television showsthat are similar to the requested television show, and which mayoriginate from a different content source 106 than the requestedtelevision show. In an embodiment, a media content management system mayprovide an option to a user to automatically record suggested mediacontent items on behalf of the user. For example, the system may providean option for a user to automatically record media content items popularin the user's area, or based on other criteria, and record therecommended media content items for the user (which may includeuploading one or more segments of the media content items from theuser's media devices).

In one embodiment, playback of media content items may include mediadevices pre-caching a portion of media content items. A pre-cachedportion of a media content item generally refers to a relatively smallportion of the media content item that may be used, for example, toefficiently play a media content item that is primarily stored in cloudstorage. For example, if a user requests to play a media content itemthat is stored in cloud storage, a media device may initially play alocally stored portion of the media content item, avoiding any latencythat may result from streaming the media content item from cloudstorage. The remainder of the media content item may be streamed fromthe cloud storage. FIG. 11 depicts an example flow 1100 for providingaccess to media content items across media devices in a cloud-basedmedia content management system, according to an embodiment.

At block 1102, a media device receives a request to schedule a recordingof a media content item. For example, a media device 108 may receive therequest to schedule a recording of the media content item as directinput from a user at the media device, as a command from a serviceprovider system 204 (e.g., from a network scheduler 304), or as acommand from any other device.

At block 1104, in response to the request to schedule the recording ofthe media content item, the media content item is recorded at thescheduled start time. For example, the media device may tune to themedia content item at the scheduled start time and store a copy of theitem at local storage of the media device. In an embodiment, the mediadevice may further cause a service provider system 204 to store a copyof the media content item at a cloud storage system. For example, themedia device may upload a copy of the media content item to the cloudstorage system, the media content item may be uploaded as part of adistributed upload media device process, or a service provider system204 may obtain a copy of the media content directly from a contentsource 106.

At block 1106, the media device stores a portion of the media contentitem. For example, the media device may initially store a copy of theentire media content item and subsequently delete all of the mediacontent item except for the selected portion. As another example, themedia device may initially store only the selected portion of the mediacontent item, and cause the remainder of the media content item to bestored in a cloud storage system. The portion of the media content itemgenerally may represent a leading portion of the media content item. Forexample, the portion may represent the first ten seconds of the mediacontent, or any other duration of time at the beginning of the mediacontent item. The size of the portion may be based on various factors,including the total duration of the media content item, the video andaudio quality of the media content item, detected network conditionsassociated with the media device, an amount of available storage spaceat the media device, etc.

At block 1108, the media device receives a request to play the mediacontent item. For example, the media device may receive the request toplay the media content item as direct input from a user, or as inputreceived from another device. The media content item may be selected,for example, from a list of recorded media content available to theuser.

At block 1110, in response to the request to play the media contentitem, the media device plays the portion of the media content item. Asindicated above, the portion of the media content item may represent aleading portion of the media content item. Thus, the media device maybeing playing of the portion in response to the request to the play themedia content item, and without any delay that may be associated if themedia content item were streamed from a remote, cloud storage system.

At block 1112, the media device sends, to a cloud storage system, arequest to stream a copy of the media content item from a start positioncorresponding to an end position of the portion of the media contentitem. The media device may then, for example, continue playing the mediacontent item when the end of the portion is reached by playing thestreamed copy received from the cloud storage system. As describedabove, by initially playing a locally stored portion of a media contentitem stored in cloud storage, a media device may mitigate delays thatmay be associated with streaming the media content item from cloudstorage when the media content item is selected for playback. Inaddition to reducing delays associated with playback of the mediacontent item, the locally stored portion of the media content may enablea media device to more efficiently perform “trick play” functions,including fast forwarding, rewinding, pausing, etc., soon after themedia content item is selected for playback.

3.4. Cloud-Based Tuners

A media device typically may include a fixed number of hardware tunersthat are each capable of tuning to a media content stream (e.g., a livetelevision feed) for playing, recording, etc., media content items. Eachtuner typically may be able to tune to only a single media contentstream at any given time, meaning the number of tuners present in amedia device may limit a number of media content streams the mediadevice can receive at the same time. For example, if a particular mediadevice has two hardware tuners, then the media device may be capable ofconcurrently viewing and/or recording up to two media content streams.Thus, if a user of the example media device requests to record threecontent items that are airing at the same time, a tuner conflict existsand the user typically is forced to decide on only two of the threeshows to record. This scenario may be extended to more than two tuners.

In one embodiment, when a media device 108 encounters a tuner conflict(e.g., due to a user requesting to record more media content streamsthan there are tuners available to the user), the media device 108 maysend a request to a media content management system 102 to tune, record,and store the additional media content streams on behalf of the mediadevice 108. In this manner, a user may not be limited to a number ofphysical tuners available to the user at the user's local media devices.The use of cloud tuners may, for example, be a service feature that auser pays an operator of a service provider system 204 a subscription orother fee to access.

FIG. 12 is a flow diagram of an example process for resolving tunerconflicts using tuners made available by a cloud-based media contentmanagement system. At block 1202, a server associated with one or morefirst tuners receives data indicating that a media device received arequest to schedule a recording of a media content item. The mediadevice may, for example, be one media device of a plurality of mediadevices associated with a particular user account. In an embodiment, theserver may be part of service provider system 204 and configured toreceive the data from media devices 108 when a media device receives arecording request from a user or other source. For example, a user mayschedule a recording of a particular media content item at a local mediadevice 108 and, in response to the request, the media device 108 maygenerate recording schedule information that is sent to service providersystem 204. The recording schedule information may be stored inassociation with other user account information associated with theuser.

In an embodiment, the one or more first tuners may be tuners managed bya service provider system 204, referred to herein as cloud tuners. Ingeneral, the tuners may be hosted by one or more computing devicesmanaged by a service provider system 204, operator headend 202, and/orcloud storage system 206. The tuners may be configured to tune to andrecord content provided by one or more content sources 106.

At block 1204, a service provider system determines that a conflictexists at the scheduled start time of the recording with each tuner ofthe one or more media devices. For example, a service provider system204 may store, for each user account, data indicating media devicesassociated with the user account and a number of tuners available ateach media device. For example, one particular user account may beassociated with three different devices (e.g., two different DVRs and asmartphone), each device having a possibly different number of availabletuners.

In an embodiment, a service provider may determine whether a conflictexists by determining a number of media content items to be recorded atthe scheduled start time, and further determining whether the number ofmedia content items exceeds a number of tuners available at the user'smedia device. As described above, a service provider system 204 maystore in association with each user account information about a numberof tuners available to the user and also store recording scheduleinformation for the user. Thus, the service provider system 204 mayanalyze the recording schedule information to determine a number ofmedia content items to be recorded at particular times, and whether asufficient number of tuners are available to the user to record all ofthe scheduled recordings. In one embodiment, if the service providersystem 204 determines that an insufficient number of tuners areavailable to the user account, the system may send an alert message tothe user. The alert message may, for example, present the user with theoption to delete certain recordings to resolve the conflict, and mayalso present the user the option to use one or more cloud tuners torecord one or more of the media content items and store the recordingsin cloud storage.

At block 1206, in response to determining that a conflict exists, theservice provider schedules a recording of the media content item to berecorded by a cloud tuner. For example, a service provider system 204may instruct one or more tuners hosted at an operator headend 202,service provider system 204, and/or cloud storage system 206 to receiveand store the additional media content items directly from a contentsource 106 and/or from other media devices 108 that have recorded or arescheduled to record the media content item. In an embodiment, mediacontent items recorded and stored in cloud storage by a service providersystem 204 may be associated with the user's account so that the usermay later access the media content items using one or more of the user'smedia devices.

As indicated above, the recording of the media content item using acloud tuner may be initiated in response to a user providing inputindicating a desire to use the cloud tuner (e.g., in response to analert message sent to the user's device), or the service provider system204 may automatically initiate the recording without explicit userinput. The service provider system 204 may then associate the recordingwith the user's account, enabling the user to access the recording atone or more of the user's media devices by streaming or downloading thecontent from cloud storage.

3.5. Cloud Storage Extender

The storage space available to a media device to store recorded mediacontent items and other data is typically limited by an amount ofstorage provided by storage devices (e.g., one or more hard disks)integrated into the media device. Some media devices may include only asmall amount of local storage and primarily function to stream mediacontent to other devices rather than to store large numbers of mediacontent items locally at the device. For these and other reasons, userscommonly manage storage space available at media devices by manuallydeleting previously recorded media content items that are no longer ofinterest and/or configuring deletion policies that cause the mediadevice to automatically delete recorded media content items after aconfigurable period of time (e.g., after 2 weeks). In one embodiment, acloud-based media content management system may provide media deviceswith additional storage space for recorded media content items, and mayenable media devices to access recorded media content items even aftermedia content items are deleted from a media device (whether explicitlydeleted by a user or deleted based on a deletion policy) at which themedia content items originally were recorded.

FIG. 13 is a flow diagram illustrating an example process for extendingmedia device storage using a cloud storage system. At block 1302, amedia device receives a request to schedule a recording of a mediacontent item. For example, a media device 108 may receive the request toschedule the recording of a media content item as direct input from auser, or the request may be received from a service provider system 204,or from another device. At block 1304, the media device stores a firstcopy of the media content item at the media device.

At block 1306, the media device causes a second copy of the mediacontent item to be stored at a cloud storage system. For example, amedia device 108 may cause a second copy of the media content item to bestored at the cloud storage system by uploading an entire copy of themedia content item, uploading one or more portions of the media contentitem as part of a distributed upload, causing a service provider system204 to obtain the media content item from a content source.

At block 1308, based on a media device deletion policy, the first copyof the media content item stored at the media device may be deleted fromstorage at the media device. For example, a media device deletion policymay indicate that media content item is to be deleted based on aduration of storage of the media content item, based on determining thatthe media device is low on available storage space, etc. As anotherexample, a media content item may be deleted explicitly by the user,possibly due to the user desiring to free storage space for other mediacontent items.

At block 1310, subsequent to the first copy of the media content itembeing deleted from storage at the media device, a request to play themedia content item is received. For example, when a user manuallydeletes a media content item or a media device deletes a media contentitem based on a deletion policy, a media content management system 102may cause the deleted media content item(s) to be available to the userfor an additional period of time after deletion. The “deletion” of amedia content item may, for example, simply unlink the media contentitem from the user's account, instead of deleting the media content itemfrom cloud storage. For example, in response to a user deleting alocally stored copy of a media content item from a media device 108, themedia device may send a notification to the media content managementsystem indicating that the user has requested deletion of the mediacontent item. The media content management system may store or updatedata indicating that the user has requested deletion of the mediacontent item (e.g., by removing a reference to the media content itemfrom the user's account information), but continue to store a copy ofthe media content item in a cloud-based storage system for aconfigurable period of time after deletion (e.g., one week or onemonth). If the user later desires to view the previously deleted mediacontent item within the allotted period of time, the user may access(e.g., stream or download) the media content item from cloud storage.

At block 1312, in response to receiving the request to play the mediacontent item, the media device retrieves the second copy of the mediacontent item from the cloud storage system. The media device mayretrieve the second copy of the media content item from the cloudstorage system by downloading or streaming a copy of the media contentitem. In an embodiment, the user may pay an additional subscription feefor the ability to retrieve previously deleted media content items, orthe user may be charged an amount each time the user requests to accessa previously deleted media content item.

In an embodiment, a cloud-based media content management system may beconfigured to store recorded media content items subject to one or morecloud storage deletion policies. As one example of a cloud storagedeletion policy, a media content management system may store a mediacontent item in cloud storage until the media content item is selectedfor deletion by each user account that originally selected the mediacontent item for recording. As another example, a deletion policy may bebased on a setting configured by a content provider and/or operator ofan operator headend. In one embodiment, if conflicting deletion policiesare specified by both of the content provider and a headend operator,then either the most restrictive or most liberal policy may be selected,depending on a particular implementation.

In an embodiment, users of a media content management system may becharged for storage space available to each user based on a number ofdifferent storage policies. As one example, each user account may becharged on a recurring basis based on the total amount of data stored bythe user during each billing period. As another example, a user accountmay be charged based at least in part on a number of different devicesto which a user is allowed to download and/or stream media content itemsstored in cloud storage. As yet other examples, a user account may becharged based on a number of concurrent streaming sessions a user isallowed, based on access to different bit rates and other media contentquality attributes, or based on any other account conditions.

In one embodiment, storage of media content items in a cloud storagesystem may be used to enable users upgrading, replacing, or addingadditional media devices to restore previously recorded media contentitems to the user's new media devices. FIG. 14 depicts an example flow1400 for a cloud-based media content management system to manage accessto media content items stored in cloud storage by upgraded and/orreplaced media devices.

At block 1402, a cloud-based media content management system stores dataindicating media content items scheduled for recording by one or moremedia devices associated with a user account. For example, each time auser selects a particular media content item for recording at a mediadevice 108, the media device may send data to a service provider system204 indicating information about the scheduled recording. In oneembodiment, in response to receiving the data indicating informationabout the scheduled recording, a service provider system 204 may cause acopy of the media content item to be stored in cloud storage. Forexample, the service provider system 204 may cause the media contentitem to be uploaded from a population of media device 108, or the systemmay directly obtain the media content item from a content source 106.

At block 1404, the media content management system receives dataindicating a new association of a media device with the user account.For example, a user associated with the user account may register thenew device with a service provider system 204 by providing usercredentials at the media device. In response to user providing the usercredentials, the new media device may send data to the service providersystem 204 identifying the media device and the user account. Theservice provider system 204 may then store information indicating thatthe new media device is associated with the user account. For example,the new media device may be a device that the user purchased to upgradean existing device the user owns, to supplement the media devicesalready owned by the user, to replace a failed device, etc. In oneembodiment, the service provider 204 may limit a number of devices thateach user is allowed to associate with a user account, or an additionalfee may be charged depending on a number of devices associated.

At block 1406, the system receives a request from the media device formedia content items previously selected for recording by the same useraccount. For example, the request may be generated by the newlyassociated media device as part of an initial device configurationprocess, or in response to a user providing input requesting the deviceto retrieve one or more of the previously recorded media content items.If the user is replacing a failed media device with a replacement mediadevice, for example, the user may desire to restore all of the mediacontent items previously recorded by the failed media device and/orother media devices associated with the same user account.

At block 1408, the media content items are sent to the media device fromcloud storage. For example, the service provider system 204 may send themedia content items directly to the media device, or may otherwise causethe media device to access the media content items from a cloud storagesystem managed by the service provider system 204. The new media devicemay download and store the media content items to local storage and/ormay stream the media content items for playback. In this manner, theservice provider system 204 may enable users to upgrade and/or replacemedia devices without losing access to media content previously recordedby the user's other media devices.

4.0. Example Embodiments

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, by a media device, a media content item;identifying boundaries of two or more segments within the media contentitem; based on identifying the boundaries of the two or more segments,selecting, by the media device, one or more particular segments of thetwo or more segments to send to a cloud storage system; sending the oneor more particular segments to the cloud storage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: generating one or more segment identification valuesfor each of the two or more segments; sending the one or more segmentidentification values for each of the two or more segments to a mediacontent management server.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: generating one or more segment identification valuesfor each of the two or more segments; sending a value derived from theone or more segment identification values for each of the two or moresegments to a media content management server.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein selecting the one or more particular segmentsof the two or more segments to send to a cloud storage system includesreceiving, from a media content management server, data instructing themedia device to send the one or more particular segments to the cloudstorage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the boundaries of the two or more segmentswithin the media content item are based on a specified number of groupof pictures (GOPs) within the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the boundaries of the two or more segmentswithin the media content item are based on a specified range of metadatavalues associated with the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the boundaries of the two or more segmentswithin the media content item are based on a specified range of metadatavalues associated with the media content item, the metadata valuesrepresenting program clock reference (PCR) values.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the boundaries of the two or more segmentswithin the media content item are based on a specified range of metadatavalues associated with the media content item, the metadata valuesrepresenting presentation timestamp (PTS) values.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein generating the one or more segmentidentification values for each of the two or more segments includesgenerating a hash value based on data comprising the two or moresegments.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein generating the one or more segmentidentification values for each of the two or more segments includesgenerating a fingerprint based on data comprising the two or moresegments.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the two or more segments represent two ormore first segments; identifying boundaries of one or more secondsegments within the media content item, the one or more second segmentsrepresenting a different portion of the media content item from the twoor more first segments; generating one or more second segmentidentification values for each of the one or more second segments;sending the one or more second segment identification values for each ofthe one or more second segments to the media content management server;receiving data instructing the media device not to send the send one ormore second segments to the cloud storage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: determining one or more upload efficiencymeasurements associated with the media device, the upload efficiencymeasurements including one or more of: a signal strength of the mediadevice, a type of network to which the media device is connected, acurrent network speed, a type of the media device; sending the uploadefficiency measurements to the media content management server.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, from a media content management server,data including instructions for identifying the boundaries of the two ormore segments within the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, from a second media device, data includinginstructions for identifying the boundaries of the two or more segmentswithin the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, by the media device, a second mediacontent item; identifying boundaries of two or more segments within thesecond media content item; based on identifying the boundaries of thetwo or more segments within the second media content item, determining,by the media device, not to send any of the two or more segments withinthe second media content item to a cloud storage system.

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, by a server associated with one or more firsttuners, data indicating a request to schedule a recording of a mediacontent item at a scheduled start time, the request received by a mediadevice of one or more media devices associated with a user account;wherein the one or more media devices associated with the user accountcomprise one or more second tuners; determining that a conflict existsat the scheduled start time with each tuner of the one or second tuners;in response to determining that a conflict exists at the scheduled starttime with each tuner of the one or more second tuners, scheduling arecording of the media content item using a tuner of the one or morefirst tuners.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the recording of the media content item usingthe tuner of the one or more first tuners is stored in a cloud storagesystem.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: sending a copy of the media content item to one ormore of the media devices associated with the user account.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the user account is charged a fee for use ofthe tuner of the one or more first tuners.

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, at a media device, a request to schedule arecording of a media content item; based on the request to schedule therecording of the media content item, storing a first copy of the mediacontent item at the media device; causing, at a cloud storage system,storage of a second copy of the media content item; based on a mediadevice deletion policy, deleting the first copy of the media contentitem stored at the media device; subsequent to deleting the first copyof the media content item stored at the media device, receiving arequest to play the media content item; in response to receiving therequest to play the media content item, retrieving the second copy ofthe media content item from the cloud storage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the cloud storage is managed by a cloudstorage provider.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the cloud storage is managed by a televisionheadend operator.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: based on a cloud storage deletion policy, removingthe media content item from a list of media content items available to auser account associated with the media device.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: based on a cloud storage deletion policy, removingthe media content item from a list of media content items available to auser account associated with the media device; determining that a userassociated with the user account purchased additional cloud storagespace; based on determining that a user associated with the user accountpurchased additional cloud storage space, adding the media content itemfrom the list of media content items available to the user account.

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, at a media content management server, a firstnumber of requests to schedule a recording of a particular media contentitem, each request of the first number of requests received from a mediadevice of a plurality of media devices; wherein each media device of theplurality of media devices is associated with a user account of aplurality of user accounts, each user account of the plurality of useraccounts associated with an amount of cloud storage space; causingstorage of a second number of copies of the particular media contentitem at a cloud storage system accessible to the plurality of mediadevices via the Internet, the second number of stored copies less thanthe first number of requests to schedule a recording of the particularmedia content item; increasing an amount of used cloud storage spaceassociated with each user account of the plurality of user accounts, theamount based on the size of the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the amount represents the entire size of themedia content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the amount represents a fraction of theentire size of the media content item, the fraction based on the firstnumber of requests.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, from a particular media device of theplurality of media devices, a request to delete the media content item,the particular media device associated with a particular user account ofthe plurality of user accounts; decreasing the amount of used cloudstorage space associated with the particular media content item.

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, from a media device, a request to schedule arecording of a media content item; determining a relevancy value for themedia content item, the relevancy value indicating a likelihood arequest for playback of the media content item is received in a definedperiod of time; determining, based at least in part on the relevancyvalue, to store the media content item at one of a first storage systemand a second storage system; storing the media content item at one ofthe first storage system and the second storage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: determining, based at least in part on the relevancyvalue, a format for storing the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: determining, based at least in part on the relevancyvalue, a quality level with which to store the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the relevancy value is based on a populationof user accounts.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein determining the relevancy value for the mediacontent item includes analyzing historical data for one or more useraccounts.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: wherein the first storage system comprises cloudstorage managed by a cloud storage provider, and wherein the secondstorage system comprises cloud storage managed by a television headendoperator.

In an embodiment, a method or non-transitory computer readable mediumcomprises: storing, by a media content management server, dataindicating a plurality of media content items scheduled for recording byone or more first media devices associated with a user account;receiving data indicating a new association of a second media devicewith the user account; receiving a request from the second media devicefor one or more media content items of the plurality of media contentitems; in response to determining that the second media device isassociated with the user account, sending the one or more media contentitems to the second media device.

In an embodiment, a method or non-transitory computer readable mediumcomprises: storing, at a media device, a portion of a media contentitem; in response to receiving a request to play the media content item,the media device: playing the portion of the media content item; andsending, to a cloud storage system, a request to stream a copy of themedia content item from a start position corresponding to an endposition of the portion of the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, at the media device, a request to schedulea recording of the media content item; in response to the request toschedule the recording of the media content item, recording the mediacontent item at the scheduled start time; sending, to a media contentmanagement server, data indicating that the media device recorded themedia content item; deleting, at the media device, all of the mediacontent except for the portion of the media content item.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: receiving, at the media device, a request to schedulea recording of the media content item; in response to the request toschedule the recording of the media content item, recording the mediacontent item at the scheduled start time; sending, to a cloud storagesystem, a copy of the media content item.

In an embodiment, a method or non-transitory computer readable mediumcomprises: receiving, from a media device, data indicating that themedia device received a command to pause playback of a live mediacontent stream; in response to receiving the data indicating that themedia device received the command to pause playback of the media contentitem, causing a server of a cloud storage system to record the mediacontent item; in response to receiving data indicating that the mediadevice received a command to resume playback of the media content item,streaming a copy of the media content item to the media device from thecloud storage system.

In an embodiment, the method or non-transitory computer readable mediumfurther comprises: subsequent to receiving the data indicating that themedia device received the command to pause playback of the media contentitem, receiving data indicating that the media device reached the livepoint of the media content item; in response to receiving the dataindicating that the media device reached the live point of the mediacontent item, ceasing streaming of the copy of the media content itemfrom the cloud storage system; causing a television operator headend toresume sending the media content item to the media device.

5.0. Implemenation Mechanism-Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 15 is a block diagram that illustrates a computersystem 1500 upon which an embodiment of the invention may beimplemented. Computer system 1500 includes a bus 1502 or othercommunication mechanism for communicating information, and a hardwareprocessor 1504 coupled with bus 1502 for processing information.Hardware processor 1504 may be, for example, a general purposemicroprocessor.

Computer system 1500 also includes a main memory 1506, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 1502for storing information and instructions to be executed by processor1504. Main memory 1506 also may be used for storing temporary variablesor other intermediate information during execution of instructions to beexecuted by processor 1504. Such instructions, when stored innon-transitory storage media accessible to processor 1504, rendercomputer system 1500 into a special-purpose machine that is customizedto perform the operations specified in the instructions.

Computer system 1500 further includes a read only memory (ROM) 1508 orother static storage device coupled to bus 1502 for storing staticinformation and instructions for processor 1504. A storage device 1510,such as a magnetic disk or optical disk, is provided and coupled to bus1502 for storing information and instructions.

Computer system 1500 may be coupled via bus 1502 to a display 1512, suchas a cathode ray tube (CRT), for displaying information to a computeruser. An input device 1514, including alphanumeric and other keys, iscoupled to bus 1502 for communicating information and command selectionsto processor 1504. Another type of user input device is cursor control1516, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor1504 and for controlling cursor movement on display 1512. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

Computer system 1500 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 1500 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 1500 in response to processor 1504 executing one or moresequences of one or more instructions contained in main memory 1506.Such instructions may be read into main memory 1506 from another storagemedium, such as storage device 1510. Execution of the sequences ofinstructions contained in main memory 1506 causes processor 1504 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 1510.Volatile media includes dynamic memory, such as main memory 1506. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 1502. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 1504 for execution. Forexample, the instructions may initially be carried on a magnetic disk orsolid state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 1500 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 1502. Bus 1502 carries the data tomain memory 1506, from which processor 1504 retrieves and executes theinstructions. The instructions received by main memory 1506 mayoptionally be stored on storage device 1510 either before or afterexecution by processor 1504.

Computer system 1500 also includes a communication interface 1518coupled to bus 1502. Communication interface 1518 provides a two-waydata communication coupling to a network link 1520 that is connected toa local network 1522. For example, communication interface 1518 may bean integrated services digital network (ISDN) card, cable modem,satellite modem, or a modem to provide a data communication connectionto a corresponding type of telephone line. As another example,communication interface 1518 may be a local area network (LAN) card toprovide a data communication connection to a compatible LAN. Wirelesslinks may also be implemented. In any such implementation, communicationinterface 1518 sends and receives electrical, electromagnetic or opticalsignals that carry digital data streams representing various types ofinformation.

Network link 1520 typically provides data communication through one ormore networks to other data devices. For example, network link 1520 mayprovide a connection through local network 1522 to a host computer 1524or to data equipment operated by an Internet Service Provider (ISP)1526. ISP 1526 in turn provides data communication services through theworld wide packet data communication network now commonly referred to asthe “Internet” 1528. Local network 1522 and Internet 1528 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 1520 and through communication interface 1518, which carrythe digital data to and from computer system 1500, are example forms oftransmission media.

Computer system 1500 can send messages and receive data, includingprogram code, through the network(s), network link 1520 andcommunication interface 1518. In the Internet example, a server 1530might transmit a requested code for an application program throughInternet 1528, ISP 1526, local network 1522 and communication interface1518.

The received code may be executed by processor 1504 as it is received,and/or stored in storage device 1510, or other non-volatile storage forlater execution.

In an embodiment, some or all of the systems described herein may be orcomprise server computer systems, including one or more server computerdevices that collectively implement various components of the system asa set of server-side processes. The server computer systems may includeweb server, application server, database server, and/or otherconventional server components that the depicted components utilize toprovide the described functionality. The server computer systems mayreceive network-based communications comprising input data from any of avariety of sources, including without limitation user-operated clientcomputing devices such as desktop computers, tablets, or smartphones,remote sensing devices, and/or other server computer systems.

In an embodiment, certain server components may be implemented in fullor in part using “cloud”-based components that are coupled to thesystems by one or more networks, such as the Internet. The cloud-basedcomponents may expose interfaces by which they provide processing,storage, software, and/or other resources to other components of thesystems. In an embodiment, the cloud-based components may be implementedby third third-party entities, on behalf of another entity for whom thecomponents are deployed. In other embodiments, however, the describedsystems may be implemented entirely by computer systems owned andoperated by a single entity.

6.0. Extensions and Alternatives

As used herein, the terms “first,” “second,” “certain,” and “particular”are used as naming conventions to distinguish queries, plans,representations, steps, objects, devices, or other items from eachother, so that these items may be referenced after they have beenintroduced. Unless otherwise specified herein, the use of these termsdoes not imply an ordering, timing, or any other characteristic of thereferenced items.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. Thus, the sole and exclusive indicatorof what is the invention, and is intended by the applicants to be theinvention, is the set of claims that issue from this application, in thespecific form in which such claims issue, including any subsequentcorrection. In this regard, although specific claim dependencies are setout in the claims of this application, it is to be noted that thefeatures of the dependent claims of this application may be combined asappropriate with the features of other dependent claims and with thefeatures of the independent claims of this application, and not merelyaccording to the specific dependencies recited in the set of claims

Any definitions expressly set forth herein for terms contained in suchclaims shall govern the meaning of such terms as used in the claims.Hence, no limitation, element, property, feature, advantage or attributethat is not expressly recited in a claim should limit the scope of suchclaim in any way. The specification and drawings are, accordingly, to beregarded in an illustrative rather than a restrictive sense.

What is claimed is:
 1. A method, comprising: receiving, at a mediadevice, a request to schedule a recording of a media content item; basedon the request to schedule the recording of the media content item,storing a first copy of the media content item at the media device;causing, at a cloud storage system, storage of a second copy of themedia content item; based on a media device deletion policy, deletingthe first copy of the media content item stored at the media device;subsequent to deleting the first copy of the media content item storedat the media device, receiving a request to play the media content item;in response to receiving the request to play the media content item,retrieving the second copy of the media content item from the cloudstorage system.
 2. The method of claim 1, wherein causing storage of asecond copy of the media content item at the cloud storage systemincludes the media device uploading a copy of the media content item tothe cloud storage system.
 3. The method of claim 1, wherein causingstorage of a second copy of the media content item at the cloud storagesystem includes the media device uploading a portion of the mediacontent item to the cloud storage system as part of a distributed uploadof the media content item from a plurality of media devices.
 4. Themethod of claim 1, wherein causing storage of a second copy of the mediacontent item at the cloud storage system includes causing a serviceprovider server to obtain the second copy of the media content item froma content source.
 5. The method of claim 1, wherein the media devicedeletion policy indicates an amount of time to maintain a stored copy ofthe media content item at the media device.
 6. The method of claim 1,wherein the media device deletion policy indicates an amount ofavailable storage space to maintain at the media device.
 7. The methodof claim 1, wherein the media device deletion policy includes receivinginput from a user requesting deletion of the media content item.
 8. Themethod of claim 1, wherein retrieving the second copy of the mediacontent item from the cloud storage system comprises streaming thesecond copy of the media content item for playback by the media device.9. The method of claim 1, wherein retrieving the second copy of themedia content item from the cloud storage system comprises downloadingthe second copy of the media content item for storage at the mediadevice.
 10. The method of claim 1, wherein the media device is a firstmedia device, and wherein retrieving the second copy of the mediacontent item from the cloud storage system comprises streaming thesecond copy of the media content item from the cloud storage system forplayback from a second media device that is different from the firstmedia device.
 11. The method of claim 1, wherein the media device is afirst media device, and wherein retrieving the second copy of the mediacontent item from the cloud storage system comprises downloading thesecond copy of the media content item from the cloud storage system forplayback from a second media device that is different from the firstmedia device.
 12. One or more non-transitory computer-readable medium,storing one or more sequences of instructions, wherein execution of theone or more sequences of instructions by one or more processors causesthe one or more processors to perform: receiving, at a media device, arequest to schedule a recording of a media content item; based on therequest to schedule the recording of the media content item, storing afirst copy of the media content item at the media device; causing, at acloud storage system, storage of a second copy of the media contentitem; based on a media device deletion policy, deleting the first copyof the media content item stored at the media device; subsequent todeleting the first copy of the media content item stored at the mediadevice, receiving a request to play the media content item; in responseto receiving the request to play the media content item, retrieving thesecond copy of the media content item from the cloud storage system. 13.The one or more non-transitory computer-readable medium of claim 12,wherein causing storage of a second copy of the media content item atthe cloud storage system includes the media device uploading a copy ofthe media content item to the cloud storage system.
 14. The one or morenon-transitory computer-readable medium of claim 12, wherein causingstorage of a second copy of the media content item at the cloud storagesystem includes the media device uploading a portion of the mediacontent item to the cloud storage system as part of a distributed uploadof the media content item from a plurality of media devices.
 15. The oneor more non-transitory computer-readable medium of claim 12, whereincausing storage of a second copy of the media content item at the cloudstorage system includes causing a service provider server to obtain thesecond copy of the media content item from a content source.
 16. The oneor more non-transitory computer-readable medium of claim 12, wherein themedia device deletion policy indicates an amount of time to maintain astored copy of the media content item at the media device.
 17. The oneor more non-transitory computer-readable medium of claim 12, wherein themedia device deletion policy indicates an amount of available storagespace to maintain at the media device.
 18. The one or morenon-transitory computer-readable medium of claim 12, wherein retrievingthe second copy of the media content item from the cloud storage systemcomprises streaming the second copy of the media content item from thecloud storage system for playback by the media device.
 19. The one ormore non-transitory computer-readable medium of claim 12, whereinretrieving the second copy of the media content item from the cloudstorage system comprises downloading the second copy of the mediacontent item from the cloud storage system for storage at the mediadevice.
 20. A system, comprising: a media recording device, at a mediadevice, that receives a request to schedule a recording of a mediacontent item; a local storage device at the media device that, based onthe request to schedule the recording of the media content item, storesa first copy of the media content item; a cloud storage system thatstores of a second copy of the media content item; a media recordingmanagement device, at the media device, that, based on a media devicedeletion policy, deletes the first copy of the media content item storedat the media device; wherein the media recording management device,subsequent to deleting the first copy of the media content item storedat the media device, receives a request to play the media content item;wherein the media recording management device, in response to receivingthe request to play the media content item, retrieves the second copy ofthe media content item from the cloud storage system.
 21. The system ofclaim 20, wherein the media recording management device uploads a copyof the media content item to the cloud storage system.
 22. The system ofclaim 20, wherein the media recording management device uploads aportion of the media content item to the cloud storage system as part ofa distributed upload of the media content item from a plurality of mediadevices.
 23. The system of claim 20, wherein the cloud storage systemobtains the second copy of the media content item from a content source.24. The system of claim 20, wherein the media device deletion policyindicates an amount of time to maintain a stored copy of the mediacontent item in the local storage device.
 25. The system of claim 20,wherein the media device deletion policy indicates an amount ofavailable storage space to maintain in the local storage device.
 26. Thesystem of claim 20, wherein the media recording management devicestreams the second copy of the media content item from the cloud storagesystem for playback by the media device.
 27. The system of claim 20,wherein the media recording management device downloads the second copyof the media content item from the cloud storage system for storage atthe media device.